我们在生产环境上站点为了安全是需要配置https的,但是一般的访问都是默认http访问。
我们需要做的是nginx配置里设置https,并做http跳转到https。
配置如下供参考。
以test.com为例子:
在server{} 区域里配置
代码如下:
listen 80;
listen 443 ssl http2;
server_name test.com www.test.com;
index index.html index.php index.htm default.php default.htm default.html;
root /www/wwwroot/PHP7001/test.com;
#301-START
if ($host ~ '^test.com'){
return 301 https://www.test.com$request_uri;
}
#301-END
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/wwwconfig/PHP7001/cert/test.com/fullchain.pem;
ssl_certificate_key /www/wwwconfig/PHP7001/cert/test.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
ps:这里同时监听了80和443端口,并且同时接受test.com和www.test.com的访问,如果客户访问的是test.com会301跳转到www.test.com;如果客户发送的http请求将会跳转到https协议。