nginx 配置 http 自动跳转到 https 问题

2019-09-11 13:03:08 +08:00
 chfight

现在 https 使用的是 8443 端口,想要实现访问 8443 端口的 http->https 自动跳转

例如访问 http://aaa.com:8443 -> https://aaa.com:8443

请问可以做到这样吗?

9725 次点击
所在节点    NGINX
34 条回复
weiruanniubi
2019-09-11 15:47:57 +08:00
Nginx 可以一个端口同时提供 HTTP 和 HTTPS 服务!!??
8848
2019-09-11 15:52:54 +08:00
server {
listen 80;
listen 443 ssl;
server_name a.com;
rewrite ^ $scheme://www.a/$request_uri permanent;
}
foxni
2019-09-11 16:01:01 +08:00
有点蒙,一个端口上同时监听 http 和 https?
zjsxwc
2019-09-11 16:05:30 +08:00
https 不是和 443 绑定的吗,怎么还能强制 https 与特定非 443 端口绑定?
akira
2019-09-11 16:12:28 +08:00
没有什么需求是加一个中间层解决不了的。

http 和 https 的协议是不一样的, http 上来就是发 get/post 请求,https 的话 应该是 ssl 的握手封包。 做个中间层,判断下上来的前几个字符,是 http 就做个 https 跳转,其他的全部放行。
trafficMGR
2019-09-11 16:16:32 +08:00
楼主的问题是:针对 HTTPS 协议端口,客户端使用了错误的协议时该如何响应。这时候就需要把客户端引导到 HTTPS 协议上。

解决办法详见 8 楼和 17 楼。
xfriday
2019-09-11 16:28:57 +08:00
@zjsxwc 当然可以,协议是协议,端口是端口,80、443 只是 http 和 https 的默认端口而已
lllllliu
2019-09-11 16:52:57 +08:00
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
workspace
2019-09-11 17:12:32 +08:00
无解
Michaelssss
2019-09-11 17:20:43 +08:00
同一个端口搞两个?写 lua 呗,反正写规则肯定是不行。。。
colorcat
2019-09-12 10:29:34 +08:00
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
Oysmart
2019-09-26 23:02:59 +08:00
if ($scheme = "http") {

rewrite ^/(.*)$ https://$server_name:$server_port/$1 permanent;

}
Anonym0u5
2019-11-01 13:22:56 +08:00
同样遇到这个问题,443 和 80 不能用,ssl 监听了其它端口,后端 Java 域名+端口没问题。前端服务域名+端口访问报 400 Bad request。页面进不去
Anonym0u5
2019-11-01 14:36:13 +08:00
我是 nginx 分别反向代理到前后端

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

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

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

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

© 2021 V2EX