重定向所有的站点到 https
通过在 nginx.conf
文件中添加以下内容,将所有非安全(HTTP)请求重定向到使用 HTTPS 连接的服务器上配置的任何站点
1 2 3 4 5
| server { listen 80 default_server; server_name _; return 301 https://$host$request_uri; }
|
server_name
的值 _
, 匹配所有的主机名称.
使用重定向
首先配置支持 HTTPS 必须让 Nginx 开启 http_ssl_module
模块,点击查看 nginx 编译安装参数 ,可以使用nginx -V
查看是否开启TLS SNI support enabled
。
购买/生成 SSL 证书,可以使用免费的证书,在这里申请就很可以 腾讯云 SSL 证书
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }
server { listen 443 ssl; server_name www.domain.com domain.com; ssl_certificate https/domain.com.crt; ssl_certificate_key https/domain.com.key; }
|
注意,这里证书的格式是 .crt
的。
善用变量
1 2 3 4 5 6 7 8 9 10 11 12
| server { if ($https = '') { return 301 https://domain.com$request_uri; } if ($host = 'www.domain.com'){ return 301 https://domain.com$request_uri; } }
|
配置后的访问规则
对于网站需要 https 和 http 共同来访问的可以
1 2 3 4 5
| server { listen 80; listen 443 ssl; server_name www.domain.com domain.com; }
|
参考链接