我的需求:
http://iyaozhen.com -> https://iyaozhen.com
http://www.iyaozhen.com -> https://iyaozhen.com
这两个已经实现:
server {
listen 80;
listen [::]:80;
server_name iyaozhen.com www.iyaozhen.com;
return 301 https://iyaozhen.com$request_uri;
}
我还需要 https://www.iyaozhen.com -> https://iyaozhen.com
按理我是需要这样配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.iyaozhen.com;
return 301 https://iyaozhen.com$request_uri;
}
但我发现这样配置的话所以网站都不能访问了,而且我不配置的话同样能跳转过去(不知道为什么)。
这都是小问题,更大的问题是 https://demo.iyaozhen.com/ (或者其它有设置 DNS 解析,但没在 Nginx 里面设置 server 的域名)能访问到 iyaozhen.com 的内容(https 那里有红x)。
# prevent processing requests with undefined server names
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
主域 iyaozhen.com 的配置:
server {
listen 443 ssl spdy;
listen [::]:443 ssl spdy;
# SSL configuration
# don’t use SSLv3 ref: POODLE
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 省略其它的设置……
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
server_name iyaozhen.com;
}
我发现问题的根源是简单的 listen 443 然后做跳转是不行的,必须要配置证书啥的。这怎么办?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.