nginx 怎么自动跳转到 https 而不允许 http 访问

2014-12-30 20:50:54 +08:00
 kenvix

http访问还没来得及设置就直接400

14003 次点击
所在节点    问与答
16 条回复
liuhaotian
2014-12-30 20:54:42 +08:00
listen 443 ssl;
if ($scheme!=https){rewrite xxx;}
palytoxin
2014-12-30 21:04:42 +08:00
server {
listen 80;
server_name example.us;
rewrite ^/(.*) https://$server_name/$1 permanent;
}
kenvix
2014-12-30 21:04:57 +08:00
@liuhaotian 不行。。还是400
liuhaotian
2014-12-30 21:05:31 +08:00
@kenvix 难道你这个不是80端口?
kenvix
2014-12-30 21:05:52 +08:00
@liuhaotian 自定义的web端口 你懂的
kenvix
2014-12-30 21:06:10 +08:00
@palytoxin 同。自定义web端口 不行
palytoxin
2014-12-30 21:10:33 +08:00
@kenvix 用了好长时间了,看看是不是应用服务器有问题
liuhaotian
2014-12-30 21:22:23 +08:00
@palytoxin 我觉得他的意思是非80端口要开https不能够这么跳转
kenvix
2014-12-30 21:32:57 +08:00
@palytoxin 就是@liuhaotian 说的那样
Starduster
2014-12-30 21:33:32 +08:00
所以你没说清楚你改了什么地方啊。。。改了端口贴配置啊
kenvix
2014-12-30 21:35:43 +08:00
@Starduster 我就是一个listen xxxx;这个端口开启ssl 要求http请求自动跳转...
server {
listen 1234 ssl;
if ($scheme!=https){rewrite...}
}
Starduster
2014-12-30 21:41:29 +08:00
@kenvix server {
listen 80;
server_name XXX;
rewrite ^(.*) https://$server_name:1234$1 permanent;
}


# HTTPS server
#
server {
listen 1234 ssl spdy;
server_name XXX;

实测可行,至于 SPDY 是我原来就开了的
Keyes
2014-12-30 21:47:23 +08:00
那個,實際真相是:

用error 497來做跳轉

首先
listen 80;
listen 443;

然後配置497頁面
error_page 497 https://$host$request_uri;

最後使http來路的請求轉換到https(加入到主機定義行的最後位置):
if ($server_port = 80) {
return 497;
}
Keyes
2014-12-30 21:52:00 +08:00
WIKIPEDIA對於497的解釋(link: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes):

497 HTTP to HTTPS (Nginx)
Nginx internal code used for the plain HTTP requests that are sent to HTTPS port to distinguish it from 4XX in a log and an error page redirection.
superw
2014-12-31 00:00:00 +08:00
你是无名智者吧
BinbinWang
2014-12-31 00:13:46 +08:00
1. listen 1234;
server_name xxx.xxx;
ssl on;

2. listen 80;
server_name xxx.xxx;
rewrite 1234

done

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

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

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

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

© 2021 V2EX