V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
z18137
V2EX  ›  宽带症候群

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

  •  
  •   z18137 · 2018-10-07 15:40:36 +08:00 · 7012 次点击
    这是一个创建于 2264 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家里有台小型服务器,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 ??

    9 条回复    2019-01-09 19:16:47 +08:00
    whileFalse
        1
    whileFalse  
       2018-10-07 16:50:03 +08:00
    Livid 设计的这个发帖格式害了多少人,排版乱的一 B。

    你的 URL 重写怎么做的?另外注意 http://xxx.com:96https://xxx.com:99 不是一个站。
    imWBB
        2
    imWBB  
       2018-10-07 21:14:50 +08:00 via Android
    hsts preload 了解一下
    z18137
        3
    z18137  
    OP
       2018-10-08 22:53:26 +08:00
    @whileFalse URL 重写是在 IIS 里面设置的,整站跳转,跟据百度搜索一步步来的,https://{HTTP_HOST}/{R:1} 这是我的规则,帮我看看要怎么改?
    z18137
        4
    z18137  
    OP
       2018-10-08 22:56:08 +08:00
    @imWBB 百度了一下,依旧要用到 URL 重写,还是要端口跳转啊
    z18137
        5
    z18137  
    OP
       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
        6
    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
        7
    z18137  
    OP
       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
        8
    whileFalse  
       2018-10-09 17:07:07 +08:00
    @z18137 哎,太费劲了。要不你就直接访问 https 地址得了。浏览器访问一次也就能记住了。
    carrionlee
        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
    }
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3145 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:19 · PVG 21:19 · LAX 05:19 · JFK 08:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.