Nginx 自定义端口强制 http 重定向到 https
本文最后更新于:2022年8月10日 下午
最近把 http 服务器从 Apache 迁移到了 Nginx ,服务轻了,逼格高了,问题多了。这次的问题发生的背景是,当前有一个服务,运行在自定义的端口(比如 9527),我需要这个服务强制使用 https,于是就有了我自以为无懈可击的配置:
1 |
|
结果:
400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx
每次必须手动在地址前加上 https,否则就 400,真的很过分。
http 重定向 https 通常的配置方法
一般情况下,会在 nginx 配置两个虚拟主机,一个监听 80 端口,标准的 http 端口,一个监听 443 端口,标准的 https 端口。这时候只需要把所有的 80 端口流量重定向到 443 端口就可以了。
1 |
|
这种方法无法用在自定义的端口上,因为不允许配置相同端口的 2 台虚拟主机。
Nginx 官方解决方案
Nginx 提供的一个自定义的状态码 497,来专门处理这个问题,配置方法几乎和传统的配置一样:
1 |
|
问题解决!现在所有访问 9527 端口的 http 流量都会被正确重定向到 https。
以上。
Nginx 自定义端口强制 http 重定向到 https
https://vickey.fun/2022/08/10/nginx-force-redirect-http-to-https-in-custom-port/