中转获取真实 IP 教程

一、HAProxy 中转

HAProxy 中转适合以下协议(soga 版本 >= 2.0.0)

SS(R) 由于监听 udp 端口,HAProxy 中转不支持 udp,请悉知

协议

VMess 所有配置方式

VLESS 所有配置方式

Trojan

SS

SSR

① soga 配置

soga 版本 >= 2.0.0

填写该配置用于接收 HAProxy 发送的客户端 IP,并重启 soga,填写后,直连也可以正常连接

proxy_protocol=true

② 安装 HAProxy

CentOS

yum install haproxy -y

Debian / Ubuntu

apt install haproxy -y

③ 编辑 haproxy 配置文件

vim /etc/haproxy/haproxy.cfg
# 第一个中转
frontend frontend_1 # 名称随意,不要有相同的名字
bind 0.0.0.0:12345 # 中转机监听端口
mode tcp
default_backend backend_1 # 要中转到哪个落地的名字
backend backend_1 # 落地名字,不要有相同的名字
mode tcp
server server1 hk.xxx.com:12345 send-proxy # 填写落地的地址和端口,加上 send-proxy 发送 IP 给 soga 后端
# 第二个中转
frontend frontend_2 # 名称随意,不要有相同的名字
bind 0.0.0.0:23456 # 中转机监听端口
mode tcp
default_backend backend_2 # 要中转到哪个落地的名字
backend backend_2 # 落地名字,不要有相同的名字
mode tcp
server server2 jp.xxx.com:23456 send-proxy # 填写落地的地址和端口,加上 send-proxy 发送 IP 给 soga 后端
# 可填写更多...

④ 重启 HAProxy

systemctl restart haproxy
# 设置开机自启
systemctl enable haproxy

二、nginx 中转

不需要开启 proxy_protocol

使用 nginx 进行反代,适合 ws 或 ws+tls

location /wspath {
proxy_pass http://后端IP或域名:后端监听端口/wspath; # 若后端开启tls,则需要写https://
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}