目前我有一个设置,其中 dnsmasq 用作 DNS 服务器,它将 DNS 查找解析到我自己的服务器 IP 地址。其中 SNIPORXY 正在监听端口 80 和 443。sniproxy 的配置是
listen 80 {
proto http
table proxy_sni
access_log {
filename /var/log/sniproxy/http_access.log
priority notice
}
}
listen 443 {
proto tls
table proxy_sni
access_log {
filename /var/log/sniproxy/https_access.log
priority notice
}
}
table proxy_sni {
.* *
}
resolver {
mode ipv4_only
}
我使用 ProxyChains 来运行 sniproxy。实际上,将 sniproxy 在端口 80 或 442 上收到的任何请求转发到 proxychains 配置中设置的代理。
proxychains sniproxy -c /etc/sniproxy.conf -f
proxychains 的配置如下
dynamic_chain
chain_len=1
tcp_read_time_out 32000
tcp_connect_time_out 11000
[ProxyList]
http 192.168.67.78 1080 username password
socks5 192.168.67.67 1234 username password
并添加以下 iptable 规则
iptables -t nat -I OUTPUT -p tcp -m owner --uid-owner $(whoami) -j RETURN
iptables -t nat -A OUTPUT -p tcp -m multiport --dports 80,443 -j REDIRECT
一切顺利,按预期工作。
我想复制相同的设置,使用 HAPORXY 或 NGINX ,希望消除使用 sniporxy 和 proxychains 。但无法让它工作。
Nginx 配置
stream {
upstream backend_d {
# Round-robin load balancing
server 11.21.4.216:12323;
server 18.21.4.151:12323;
}
server {
listen 80;
proxy_protocol on;
proxy_pass backend_d;
proxy_ssl_server_name on;
#proxy_set_header Authorization "Basic ZG5eRZG5z0sDmRuc2sRucw==";
#proxy_pass_header Authorization;
}
server {
listen 443;
proxy_protocol on;
##proxy_pass $name;
ssl_preread on;
proxy_pass backend_d;
proxy_ssl_server_name on;
##proxy_set_header Authorization "Basic ZG5eRZG5z0sDmRuc2sRucw==";
##proxy_pass_header Authorization;
}
}
是否可能仅使用 dnsmasq 和 nginx 实现相同的功能,基本上是一个反向代理 (nginx),它将请求转发到另一个代理 (需要基本身份验证的 socks/http 代理)。无需在 nginx 上终止 SSL。任何相关帮助都将不胜感激。谢谢