我们在Linux中,按照一键包等集成环境配置的lnmp环境后,由于一键包的不同,导致我们对Nginx的Https支持无法有着相同的配置方法,所以我们只需要修改Nginx默认文件来支持Https即可。
Nginx常规默认路径如下:
/etc/nginx/conf/vhost/xxx.conf
(其中xxx为您需要上Https的站点)。
打开它,里面类似于这样的文件:
server {
listen 80;
server_name localhost;
access_log /var/log/www.log main;
root /var/www/html;
index index.php index.html index.htm;
location ~ .*\.php(\/.*)*$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
我们只需要在 listen 80; 下面增加一下几行:
ssl_certificate /var/www/html/key.crt; #这是证书
ssl_certificate_key /var/www/html/key.key; #私钥
这样,我们就对Nginx开启了Https支持,这样我们的站点http和https可以同时访问,如果需要强制浏览器访问Https的话,我们需要在后面加入强制规则:
listen 443 ssl; #监听443端口,https专用
if ($server_port !~ 443){
rewrite ^/.*$ http://$host$uri; #如果端口不是443,自动转到443端口
}
加入规则后,浏览器访问80端口时会自动跳转到443端口,来达到http转向https的操作。
值得我们注意的是,两个SSL后面的证书路径需要设置存在的目录以及证书文件。