随着支持https标准的站点越来越多,浏览器上对于非https站点的标记也似乎越来越醒目了。所以用LNMP重新搭建服务器系统之后,首先想到的就是启用https。为站点开启https,首先需要一套安全证书,博主的域名购买自阿里云,域名证书也是从阿里云免费申请的,证书有限时限一年,过期前阿里云会以免费短信提醒续期。关于证书的申请这里就不再赘述了,详情可参考本站另一篇博文:《阿里云免费ssl证书》。
因为服务器软件换成了Nginx,证书也要相应更改为适用于Nginx的证书,与Apache不同的是,Nginx版本的证书仅包含两个文件;
证书的前缀数字是随机生成的,应用于实际站点时可以删除,比如笔者就把两个文件名称分别该为了“biib.top.key”以及“biib.top.pem”;
证书放置的路径没有严格的要求,确保配置文件中的证书路径与实际证书一致即可,这里笔者在“/etc/pki”路径下新建立了一个名为“nginx”的文件夹,把两个证书一起塞了进去;
接下来开始配置nginx,阿里云的nginx默认安装路径如上图所式,主配置文件为“nginx.conf”;
为避免频繁修改主配置文件,可以采用导入外部文件的方式来设置我们的服务器,将外部配置文件置于“conf.d”文件夹中(具体路径见图中红框位置),nginx启动时会自动加载;
为避免外部文件与主文件的设置重叠导致出现不满足预期的结果,我们可以把导入语句下方的语句块整体注释掉,该文件中添加注释只需要在语句行首加一个“#”号,这样后续如需复原成默认配置也比较方便;
进入“/etc/nginx/conf.d”文件夹,用文本编辑器“vim”创建一个后缀为“.conf”的新文件,因为笔者的域名为“biib.top”,所以这里将文件命名为了“biib.conf”,将以下配置内容整体复制进新建的空白文件中,注意须将注释行下方语句需要根据自己站点的实际地址作修改;
server {
listen 80;
#修改为自己的域名
server_name www.biib.top;
location / {
#修改为自己的站点实际所在文件夹
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
location ~ .php$ {
#修改为自己的站点实际所在文件夹
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 443 ssl;
#修改为自己的域名
server_name www.biib.top;
ssl_certificate /etc/pki/nginx/biib.top.pem;
ssl_certificate_key /etc/pki/nginx/biib.top.key;
ssl_session_cache shared:SSL:1m;
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 / {
#修改为自己的站点实际所在文件夹
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
location ~ .php$ {
#修改为自己的站点实际所在文件夹
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
重新启动一下nginx:
nginx -s reload
尝试分别通过“http”与“https”的方式访问自己的服务器,访问成功会显示如下nginx的默认页面。