一、网站配置
Nginx 安装 SSL 配置 HTTPS 超详细完整全过程
如下图所示,将宝塔面板自动生成的配置文件,修改或加入下图中红色框的内容即可
server
{
listen 443 ssl; #监听端口,不需要改动
#监听的域名,如果客户端这些域名访问,则由此配置文件接管并反向代理到proxy_pass
server_name lotdata.gdyzx.xyz www.lotdata.gdyzx.xyz;
#访问默认页面 从根目录中寻找以下文件 由于设置了proxy_pass所以失效
index index.php index.html index.htm default.php default.htm default.html;
#站点文件根目录
root /www/wwwroot/lotdata.gdyzx.xyz;
# ssl证书地址
ssl_certificate /www/wwwroot/lotdata.gdyzx.xyz/5963487_lotdata.gdyzx.xyz.pem; # pem文件的路径
ssl_certificate_key /www/wwwroot/lotdata.gdyzx.xyz/5963487_lotdata.gdyzx.xyz.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
proxy_pass http://localhost:53000; #!!!求转向的服务器列表!!!
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
二、问题说明
- 当一个域名配置了SSL证书和监听后,用户使用https访问其他没有配置SSL证书的站点时,会被导航到配置了SSL证书的站点。
- 配置了SSL时需要
listen 443 ssl
此时网站就无法用http直接访问了?
监听443端口是再新建一个server,如下所示
server
{
listen 80 ;
server_name gdyzx.xyz www.gdyzx.xyz;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/gdyzx.xyz;
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-56.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/gdyzx.xyz.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/gdyzx.xyz.log;
error_log /www/wwwlogs/gdyzx.xyz.error.log;
}
server
{
listen 443 ssl ;
server_name gdyzx.xyz www.gdyzx.xyz;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/gdyzx.xyz;
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-56.conf;
#PHP-INFO-END
# ssl证书地址
ssl_certificate /www/wwwroot/5590488_gdyzx.xyz.pem; # pem文件的路径
ssl_certificate_key /www/wwwroot/5590488_gdyzx.xyz.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/gdyzx.xyz.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/gdyzx.xyz.log;
error_log /www/wwwlogs/gdyzx.xyz.error.log;
}