科学上网
283 字
1 分钟
科学上网
涉及到的知识点
- nginx 四层 stream tcp 代理;
- nginx 七层反向代理;
- certbot 自动获取免费 https 证书(必须要有自己的域名,通过 cloudflare api);
- xray 的 vision reality 方案;
部署完成后,网络请求数据流向如下
Mermaid 图表渲染失败,请检查图表语法是否正确
flowchart LR
xray_client[xray客户端]
subgraph nginx[nginx]
stream{SNI分流}
https
end
subgraph xray
inbound ---> router ---> outbound
end
xray_client --> nginx
stream --- 匹配http域名 ---> https
stream --- 匹配xray域名 ---> inbounddocker-compose.yml(基于3x-ui)
services: nginx: image: nginx:alpine container_name: nginx ports: - 80:8080 - 443:8443 volumes: - $HOME/docker-compose/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - $HOME/docker-compose/nginx/conf.d/:/etc/nginx/conf.d/:ro - $HOME/docker-compose/nginx/stream.d/:/etc/nginx/stream.d/:ro - $HOME/docker-compose/nginx/snippets/:/etc/nginx/snippets/:ro - $HOME/docker-compose/nginx/cert/:/etc/cert/:ro - $HOME/docker-compose/nginx/auth/:/etc/nginx/auth/:ro - $HOME/docker-compose/certbot/etc/letsencrypt/:/etc/letsencrypt/:ro - $HOME/data/nginx/logs/:/var/log/nginx/ - $HOME/docker-compose/nginx/ssl:/etc/nginx/ssl/:ro extra_hosts: - "host.docker.internal:host-gateway" depends_on: - xray deploy: resources: limits: memory: 64M restart: unless-stopped
xray: image: ghcr.io/mhsanaei/3x-ui:latest container_name: xray # hostname: yourhostname <- optional volumes: - $HOME/data/3xui/db/:/etc/x-ui/ - $HOME/data/3xui/cert/:/root/cert/ ports: - "2053:2053" environment: XRAY_VMESS_AEAD_FORCED: "false" XUI_ENABLE_FAIL2BAN: "true" tty: true restart: unless-stopped
certbot: image: certbot/dns-cloudflare container_name: certbot environment: - TZ=Asia/Shanghai volumes: - $HOME/docker-compose/certbot/etc/letsencrypt:/etc/letsencrypt - $HOME/data/certbot/var/lib/letsencrypt:/var/lib/letsencrypt - $HOME/data/certbot/var/log/letsencrypt:/var/log/letsencrypt - $HOME/docker-compose/certbot/cloudflare.ini:/etc/cloudflare.ini:ro profiles: - manualdocker-compose.yml(基于原生xray)
services: # 自动获取证书 certbot: image: certbot/dns-cloudflare container_name: certbot environment: - TZ=Asia/Shanghai volumes: - $HOME/docker-compose/certbot/etc/letsencrypt:/etc/letsencrypt - $HOME/data/certbot/var/lib/letsencrypt:/var/lib/letsencrypt command: >- certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini --dns-cloudflare-propagation-seconds 15 --email <your_email> --agree-tos --no-eff-email --force-renewal -d <your_domain> restart: unless-stopped
nginx: image: nginxinc/nginx-unprivileged container_name: nginx ports: - 80:8080 - 443:8443 volumes: - $HOME/docker-compose/nginx/nginx.conf:/etc/nginx/nginx.conf - $HOME/docker-compose/nginx/conf.d/:/etc/nginx/conf.d/ - $HOME/docker-compose/certbot/etc/letsencrypt/:/etc/letsencrypt/ - $HOME/data/nginx/logs/:/var/log/nginx/ extra_hosts: - "host.docker.internal:host-gateway" deploy: resources: limits: memory: 64M restart: unless-stopped
xray: image: teddysun/xray container_name: xray volumes: - $HOME/docker-compose/xray/:/etc/xray restart: unless-stoppedgeosite.dat 数据查看
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
在 PVE 上给软路由虚拟机加一个网络 Watchdog
技术分享在 PVE 宿主机上用 Bash 和 systemd timer 实现一个网络 watchdog:先检测公网连通性,连续失败后重启软路由虚拟机,多次自愈无效再升级为重启 PVE 宿主机。
2
命令行自动登录 JumpServer:SSH、TOTP 与密码提示的自动化
技术分享把 JumpServer 登录流程拆成凭据读取和终端交互两层:zsh 从密码管理器安全读取 TOTP seed 与可选密码,expect 只负责响应 SSH 登录过程中的 password 和 Code 提示。
3
git 个人开发工作流
技术分享介绍个人 Git 分支协作流程:以基线分支(如 feature-a)+ 个人开发分支(feature-a-xxx)进行开发,开发分支定期 rebase 同步上游,最终通过 merge(必要时先 squash 整理提交)合回基线;并提供 grebase/gmergebase 等脚本,支持自动推导基线分支、预览计划、带 autostash 的安全 rebase,以及可选 squash/推送/删除分支的安全 merge-back。
4
使用 docker-atrust 连入深信服
技术分享使用 Docker 容器运行深信服 aTrust 客户端,通过 VNC 完成登录,并结合本机 mihomo 配置实现公司内网的 DNS 解析与按域名、IP 的精确代理分流;宿主机暴露 1080 与 8888 端口供 socks5 和 HTTP 代理使用,从而在不安装原生客户端的情况下实现零信任接入并降低对本机的影响。
5
mihomo 使用
技术分享2025-09-30
随机文章随机推荐













