家里有台小型服务器,windows 2008 R2 + IIS7.5,网站什么都已布署好,电信宽带,有公网 IP,自己的域名通过花生壳的 DDNS 绑定了家里的公网 IP,由于现在的运营商都会封 80 端口和 443 端口,所以在路由器上做了端口映射,外部 96 端口映射到服务器的 80 端口,在外网可以通过 http://xxx.com:96 正常访问家里的服务器网站。现在域名申请了 SSL 证书,且在服务器上安装好了证书,由于 443 端口被封,所以另外在路由器上做了映射,外部 99 端口映射到服务器的 443 端口,布署好后,通过 http://xxx.com:96 和 https://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 ??
1
whileFalse 2018-10-07 16:50:03 +08:00
|
2
imWBB 2018-10-07 21:14:50 +08:00 via Android
hsts preload 了解一下
|
3
z18137 OP @whileFalse URL 重写是在 IIS 里面设置的,整站跳转,跟据百度搜索一步步来的,https://{HTTP_HOST}/{R:1} 这是我的规则,帮我看看要怎么改?
|
5
z18137 OP @whileFalse http://xxx.com:96 和 https://xxx.com:99 在 IIS 里是同一个网站,96 指向 80 端口,99 指向 443 端口,网站 HTTP 协议绑定 80 端口,HTTPS 协议绑定 443 端口 我把规则改成 https://{HTTP_HOST}:99/{R:1} 无效,都不会自动跳转了,我查了下,HTTP_HOST 是获取当前域名和端口吧,要什么命令才只会获取域名??
|
6
whileFalse 2018-10-09 07:40:16 +08:00
@z18137 理论上说域名+端口号唯一标示一个网站。
所以 http://xxx.com 和 https://xxx.com 是同一个网站,http://xxx.com:96 和 https://xxx.com:99 是不同的网站。 既然 IIS 有问题就别用 IIS 的跳转了。 你可以选择: 1. 弄个 Nginx 2. 用页面 js 代码跳转,你可以考虑在 96 上部署一个专门用来跳转的站点。 |
7
z18137 OP @whileFalse Nginx 到是可以跳转,我的路由器上用的就是 Nginx,用 NGROK 穿透到路由服务器的 81 端口,总是会自动给我加上小尾巴, 比如我 NGROK 穿透后,正常访问是 http://xxx.com 但是打开服务器后,点击页面其它链接,Nginx 会在域名后面给我加上端口号: http://xxx.com:81/ss/1.html 导致网页都打不开了。找了很久都没找到完美的办法,所以,深感玩不转 Nginx,再加上我是小白中的小白,给我个现成的程序源码让我去添加内容还行,让我写代码?这是要我的命啊。。。
|
8
whileFalse 2018-10-09 17:07:07 +08:00
@z18137 哎,太费劲了。要不你就直接访问 https 地址得了。浏览器访问一次也就能记住了。
|
9
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 } } |