🏠

晓东 - 对外

综合

整体

经常巡查对外发表之内容,以免影响使用者。
  • 对外发表类型有:域名网址、文件存储、定时任务、IM邮箱等。
  • 自用服务间所调用API接口等

对外资源总表

原则
综述
标准端口(80/443)被封 - 通过HTTP/3的Alt-Svc头自定义Web服务端口。
裸域名(Naked Domain) - CNAME与MX记录冲突问题可通过"SVCB/HTTPS记录"解决,静态资源应使用子域名,避免请求时总是带上Cookie头。
                        
网站、服务器
生产服务器 若无额外组件的容器JVM参数合理值为 -XX:MaxRAMPercentage=95
非重要JVM程序可开启参数:--enable-preview
容器内存合理值观察命令:docker stats our-cms-web
技术方案内存低占用排序:
    Quarkus(GraalVM)、JVM、Open Liberty(只开启所用能力项,勿全量);
    Spring(仅用于OAuth2 Server) - 由于 spring-authorization-server 不支持暴露 @WebServlet("/x/*") 和 @jakarta.websocket.server.ServerEndpoint 标注的路径,故该项目不使用非 Spring 控制器的服务。
      纯 Spring 项目用 spring-boot-starter-websocket 库的 @Bean 提供 ServerEndpointExporter 及 @EnableWebSocket 即可暴露其路径。

服务器 综述:
  安装后更新下源列表: 
    sudo apt update
    [可选/升级] sudo apt upgrade  遇到协议文档则在冒号后输入q代表已看。

  Debian系统Stable版软件都太老旧,故应启用依然稳定的“反向移植”新版本:
    sudo vim /etc/apt/sources.list  将 bookworm-backports 行前注释移除。
    sudo apt update
    sudo apt -t bookworm-backports upgrade  若输入Y则更新全部反向移植包。
    sudo apt -t bookworm-backports search curl  加 -t 临时切源;或 线上搜索包
    sudo apt -t bookworm-backports install curl

    若自用系统,可将sources.list内所有代号(比如bookworm)换为testing字样。

    说明 - ifconfig命令包net-tools已停止开发,并被iproute2包取代了,对应命令为ip addr。

  服务器业务工具:
    Debian 12.8稳定版nginx为不支持HTTP/3的v1.22.1,故切换为testing源的v1.26.0。
    Debian 12.8稳定版docker容器为v20,Docker 23+才支持CHECKPOINT_RESTORE,故切换为testing源的v26+。

服务器 安全:
  暴力破解防护:
    最近登录账户命令 last 所在包为 sudo apt install wtmpdb
    查看失败登录日志,若同一秒多次失败就可能是暴力破解:
      lastb -30    该命令已删除,用以下命令取代👇
      journalctl --facility=auth -t sshd -g "fail|invalid|error|timeout" -n 30
    由于基于root账户名破解的居多,故禁止该账号远程访问,通过小号 sudo ls / + 小号密码切换用:
      sudo vim.tiny /etc/ssh/sshd_config 注释掉 PermitRootLogin yes 即为禁止root+密码访问 PermitRootLogin prohibit-password
      sudo service ssh restart
    屏蔽暴力破解者的IP地址(独立于防火墙/Debian可用/其他Linux另说):
      sudo vim.tiny /etc/hosts.deny 按行追加 sshd:218.92.0.246 后马上生效
      或用 自动化禁IP工具 sudo apt install fail2ban

网站应用多域名网址规划:
  裸域名 - https://congci.com/.well-known/static/images/core/logo.svg
  子域名 - https://fun.congci.com/.well-known/static/images/more/websites/fun/chinese-beauty-1024x1024.jpg
  • 文件存储 - GCS、COS https://cdn.openle.com/
      说明 - 大陆采用海外域名 https://tsc.openle.com 跳转至国内主机的方式,海外则直接用海外域名 https://staticfiles.openle.com https://abc.passed.app 。
      GCS - 主要存储方式
        长期不删存储 - 存储桶:project-123456.appspot.com  文件:staticfiles.openle.com/.well-known/static/public/v1/storage/people/more/ 或 main/ 或 other/2024/x.txt
        随时可删存储 - 存储桶:project-123456.appspot.com  文件:staticfiles.openle.com/.well-known/static/public/v1/storage/people/temporary/anytime/
        按期删除存储 - 存储桶:project-123456.appspot.com  文件:staticfiles.openle.com/.well-known/static/public/v1/storage/people/temporary/time/yearly/、monthly/、weekly/
        满了才删存储(不设失效期) - 存储桶:project-123456.appspot.com  文件:staticfiles.openle.com/.well-known/static/public/v1/storage/people/temporary/fifo/
        
        常用工具链接 跳转映射:
            映射为 https://staticfiles.openle.com/.well-known/static/public/v1/storage/people/more/app-tools/vmware/[latest-version].exe
                                    
  • 网站服务器(mainweb/大陆服务器速度快):
      网关、反向代理 - nginx非容器 配置文件路径:/etc/nginx/conf.d/default.conf
      从此 - docker容器 https://congci.com/、https://info.congci.com/、https://nav.congci.com/、https://fun.congci.com/、https://download.congci.com/
      怕啥 - docker容器(自定义端口可规避备案) https://passed.app/、https://games.passed.app/
        对外主要接口 - 发文章用的拼音+横杠 https://passed.app/main/apis/more/default/ga/anonymous/main/pinyin-url-slug
      技术服务中心 - docker容器 https://tsc.openle.com/
        对外脚本和样式表 - https://tsc.openle.com/.well-known/static/scripts/pv.js、https://tsc.openle.com/.well-known/static/styles/top-n-area.css
      开放度 - docker容器 https://openness.openle.com/ 
  • 次要服务器(moreweb/Vultr新加坡机房):
      注意 - 由于docker和ufw网络冲突,故关闭后者 ufw disable ,换用云后台防火墙。
      网关、反向代理 - nginx非容器 配置文件路径:/etc/nginx/conf.d/default.conf
      Anywhere But China - docker容器(Docker 23+支持CHECKPOINT_RESTORE) https://abc.passed.app/
        安装Docker 23+:
          curl -fsSL https://get.docker.com -o get-docker.sh
          sudo sh ./get-docker.sh
        API接口 - 上传文件至GCS临时目录 https://abc.passed.app/main/apis/more/default/ga/anonymous/upload/upload-to-abc-cloud-storage-temporary-directory
      怕啥 - nginx反向代理至主服务器 https://passed.app/、https://games.passed.app/
      LRA - docker容器+数据目录~/lra-os http://实际ip:8080/ 
  • GAE:
      Maven仓库 - https://staticfiles.openle.com/
      面向海外的网站 - https://openle.com/ 
  • GCP - MariaDB数据库 https://maindb.openle.com/、备用SS代理
      数据库备份至谷歌网盘的API接口 - https://xiaodo.ng/main/apis/more/ga/anonymous/main/back-up-to-google-drive
  • 自用服务器(mainserver):
      网关、反向代理 - nginx非容器 配置文件路径:/etc/nginx/conf.d/default.conf
      个人网站 - docker容器 https://xiaodo.ng/
      https证书签发 - Let's Encrypt命令行
      主用SS代理 
域名
  • 综合:
      域名特性 - DNSSEC(递归验证至根域名/iOS16+)、HTTP Alternative Services(Alt-Svc头/支持80和443之外的默认端口)、HSTS(HTTP Strict Transport Security/强制转HTTPS)
        DNSSEC:
          递归验证至根域名 - 若未通过验证则直接响应失败,但国内部分DNS商会直接忽略响应的DNSSEC数据,虽说不影响访问,但没起到实际效果。
          iOS16+
          用子域名先试验下
    
      域名 http://www.example.com 和 https://www.example.com 通过301方式永久跳转至 https://example.com
      squarespace 域名后台支持 自动签发 Let's Encrypt 免费 https://www.example.com 证书,故启用下。
  • 主用 - Squarespace
    其他 - Name阿里云万网
云平台、云函数、监测
  • 在大陆服务器上检测网页 - 登录“阿里云”控制台->右上角点开“云命令行”(可用1小时候)执行: curl -I https://congci.com
  • SES邮件发送API - AWS
  • 域名邮局 - Google Workspace免费版
软件、App应用
  • ...
  • 嵌入程序的WebView页面或超链接:
      隐私权 - https://tsc.openle.com/.well-known/general/privacy/
      反馈 - https://tsc.openle.com/.well-known/general/feedback/?...
      分享上传(App:得心应手/上限100MiB) - https://passed.app/main/apis/more/default/ga/anonymous/main/android/upload-file-for-share-processing?...
      Web聊天(App:都能聊) - https://tsc.openle.com/.well-known/general/feedback/?... 
其他
部分VPN工具(xray等)会禁止回国流量,即切换至全局模式时,直接就无法访问国内IP的域名了;若开发时想测试从海外IP访问国内,可开个临时云主机,搭个简单的代理短期用下。