家用服务器,被封 80+443 端口,怎么实现 HTTP 自动跳转 HTTPS?

2018-10-07 15:40:36 +08:00
 z18137

家里有台小型服务器,windows 2008 R2 + IIS7.5,网站什么都已布署好,电信宽带,有公网 IP,自己的域名通过花生壳的 DDNS 绑定了家里的公网 IP,由于现在的运营商都会封 80 端口和 443 端口,所以在路由器上做了端口映射,外部 96 端口映射到服务器的 80 端口,在外网可以通过 http://xxx.com:96 正常访问家里的服务器网站。现在域名申请了 SSL 证书,且在服务器上安装好了证书,由于 443 端口被封,所以另外在路由器上做了映射,外部 99 端口映射到服务器的 443 端口,布署好后,通过 http://xxx.com:96https://xxx.com:99 均能正常访问服务器上的网站。于是,又想把 http 协议都改成 http 协议,又做了 URL 重写,当设置好后,输入 http://xxx.com:96 或者 xxx.com:96 后,网址自动变成 https://xxx.com:96,但是因为 HTTPS 默认的端口 443 被封,所以访问服务器的网站必须带上尾巴 :99 而 URL 自动重写的时候,后面的端口号却没有改变,依然是 96 端口,造成输入 http://xxx.com:96 或者 xxx.com:96,因为 96 端口并没有 HTTPS 协议所以网页无法打开,请问我要怎么设置,才能当我输入 http://xxx.com:96 或者 xxx.com:96 网址自动跳转到输入 httpS://xxx.com:96 或者 xxx.com:99 ??

6862 次点击
所在节点    宽带症候群
9 条回复
whileFalse
2018-10-07 16:50:03 +08:00
Livid 设计的这个发帖格式害了多少人,排版乱的一 B。

你的 URL 重写怎么做的?另外注意 http://xxx.com:96https://xxx.com:99 不是一个站。
imWBB
2018-10-07 21:14:50 +08:00
hsts preload 了解一下
z18137
2018-10-08 22:53:26 +08:00
@whileFalse URL 重写是在 IIS 里面设置的,整站跳转,跟据百度搜索一步步来的,https://{HTTP_HOST}/{R:1} 这是我的规则,帮我看看要怎么改?
z18137
2018-10-08 22:56:08 +08:00
@imWBB 百度了一下,依旧要用到 URL 重写,还是要端口跳转啊
z18137
2018-10-08 23:00:13 +08:00
@whileFalse http://xxx.com:96https://xxx.com:99 在 IIS 里是同一个网站,96 指向 80 端口,99 指向 443 端口,网站 HTTP 协议绑定 80 端口,HTTPS 协议绑定 443 端口 我把规则改成 https://{HTTP_HOST}:99/{R:1} 无效,都不会自动跳转了,我查了下,HTTP_HOST 是获取当前域名和端口吧,要什么命令才只会获取域名??
whileFalse
2018-10-09 07:40:16 +08:00
@z18137 理论上说域名+端口号唯一标示一个网站。
所以 http://xxx.comhttps://xxx.com 是同一个网站,http://xxx.com:96https://xxx.com:99 是不同的网站。
既然 IIS 有问题就别用 IIS 的跳转了。
你可以选择:
1. 弄个 Nginx
2. 用页面 js 代码跳转,你可以考虑在 96 上部署一个专门用来跳转的站点。
z18137
2018-10-09 14:06:51 +08:00
@whileFalse Nginx 到是可以跳转,我的路由器上用的就是 Nginx,用 NGROK 穿透到路由服务器的 81 端口,总是会自动给我加上小尾巴, 比如我 NGROK 穿透后,正常访问是 http://xxx.com 但是打开服务器后,点击页面其它链接,Nginx 会在域名后面给我加上端口号: http://xxx.com:81/ss/1.html 导致网页都打不开了。找了很久都没找到完美的办法,所以,深感玩不转 Nginx,再加上我是小白中的小白,给我个现成的程序源码让我去添加内容还行,让我写代码?这是要我的命啊。。。
whileFalse
2018-10-09 17:07:07 +08:00
@z18137 哎,太费劲了。要不你就直接访问 https 地址得了。浏览器访问一次也就能记住了。
carrionlee
2019-01-09 19:16:47 +08:00
用 caddy,比较简单
http://xx.xxx.com:81 {
redir https://xx.xxx.com:444{url}
}
https://xx.xxx.com:444 {
gzip
tls /path/to/certfile /path/to/keyfile
proxy / local_ip:port {
transparent
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/495361

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX