科学上网

283 字
1 分钟
科学上网

涉及到的知识点#

  1. nginx 四层 stream tcp 代理;
  2. nginx 七层反向代理;
  3. certbot 自动获取免费 https 证书(必须要有自己的域名,通过 cloudflare api);
  4. 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域名 ---> inbound

docker-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:
- manual

docker-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-stopped

geosite.dat 数据查看#

https://geoviewer.aloxaf.com/

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

科学上网
https://blog.sephy.top/posts/科学上网/
作者
虾米
发布于
2024-04-13
许可协议
CC BY-NC-SA 4.0
随机文章随机推荐
Profile Image of the Author
虾米
coder
分类
标签
站点统计
文章
61
分类
4
标签
52
总字数
64,663
运行时长
0
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.13.9
文章许可
CC BY-NC-SA 4.0