我目前住在伊朗,我们的网络受限。为了绕过国家防火墙,我们必须使用位于伊朗的 VPS 作为中继,连接到伊朗境外的 VPS 服务器。
许多人使用 V2Ray VPN,并使用配置了 IPTables 的中继将端口 80 和 443 上的连接转发到 VPS ips(请参阅此要旨)
我没有配置 iptables,而是尝试使用 NGINX 来提出解决方案,以充当我和 Cloudflare CDN 后面的外部 VPS 之间的隧道代理。我的 nginx 配置如下:
server {
server_name SERVER_IP;
listen 80;
set $proxy_host_address MY_DOMAIN.COM;
location / {
resolver 1.1.1.1;
proxy_pass http://$proxy_host_address$request_uri;
proxy_redirect off;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header Host $proxy_host_address;
}
}
但这会重定向连接而不是转发连接,我该如何解决这个问题?
答案1
主要答案是proxy_redirect off;
在位置部分使用。这是一个使用 NGINX 作为中继代理的示例Websocket 传输器:
server {
root /var/www/html;
server_name example.com;
location /ws-random-path {
proxy_redirect off;
proxy_pass http://<v2ray-server-url>:<v2ray-server-port>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
# Show real IP if you enable V2Ray access log
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
proxy_ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
location / {
index index.htm index.html;
autoindex on;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
代替示例.com用您的域名并更改v2ray 服务器网址和v2ray 服务器端口使用您的 v2ray 服务器入站 IP 和端口。
我用了certbot激活受信任的 Let's Encrypt SSL 证书。
答案2
这根本行不通,因为你引用的要点是通过加密连接运行的,而你在这里使用的是纯 HTTP。无论你当前面临的问题是什么,这都无法帮助你绕过伊朗国家防火墙。
不要再重新发明轮子了。