感谢楼上各位的讨论与分享,我照着教程把我的nginx配置改了,已经成功实现了伪装。
简单介绍一下我的想法,在vps上只对外开放80、443两个端口,除了提供http服务外,ss-libev隐藏于80端口后,v2ray隐藏于443端口后,设置好证书后,我的nginx增加了下面两处代码:
80:
location = /{
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
if ($http_upgrade = "websocket") {
proxy_pass http://127.0.0.1:12345;
}
}
443:
location = /{
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
if ($http_upgrade = "websocket") {
proxy_pass http://127.0.0.1:54321;
}
}
在ios端连接80的ss-libev或者链接443的v2ray都成功。
然后我想配置浏览器访问80端口的时候强制跳转到443,在80端口的代码下增加了一句:
rewrite ^(.*)$ https://$host$1 permanent;
就出问题了,具体故障为:
之前正常走80端口的ss-libev失效,但走443端口的v2ray不受影响。
我明白应该是这句跳转代码把ss的流量引向了v2ray导致的,但却不知道如何纠正。
我希望达到的目的:
1.浏览器用http访问的时候强制走https
2.ss-libev走80
3.v2ray走443
以上三点互不影响。
谢谢,请不吝赐教