lnmp配置nginx SSL A+

2016-02-18

今天备案终于下来,将服务器搬移到阿里云,由于我采用的是SSL,所以要对nginx进行配置,配置信息参考了andy1999的这篇文章

首先是合并证书,格式是文件上面是域名CRT证书(server.crt),下面是根证书(server.ca-bundle)。
先使用记事本打开颁发的域名CRT证书(server.crt),在下面添加上根证书(server.ca-bundle),然后保存,后缀仍旧是crt。(证书可以用记事本打开编辑)
再使用vi、touch等命令将key和crt保存到:/usr/local/nginx/conf/ 目录下(不是vhost)
然后生成一个4096位的pem安全文件,在终端打:openssl dhparam -out dhparam.pem 4096 (这个文件会保存在/usr/local/nginx/conf/dhparam.pem,这个需要很长时间生成。

然后用touch safe.conf&&vi safe.conf创建一个配置文件,粘贴以下内容:

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers “ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA”;
ssl_dhparam dh4096.pem;

然后保存。
再删除默认的conf文件并重新创建一个空配置文件:rm -f /usr/local/nginx/conf/你的域名.conf&&vi /usr/local/nginx/conf/你的域名.conf

然后根据情况修改以下配置文件,然后粘贴:

server {
listen 80;
server_name www.你的域名.com 你的域名.com;
return 301 https://$server_name$request_uri;
}

server{
listen 443;
server_name www.你的域名.com 你的域名.com;
ssl on;
ssl_certificate 你的crt.crt;
ssl_certificate_key 你的key.key;
index index.html index.htm index.php default.html default.htm default.php;
root 你网站的目录;
include enable-php.conf;
include safe.conf;
}
最后保存,在终端打:lnmp nginx reload 就会重载配置文件。
WordPress可在最后一个}前添加 include wordpress.conf; 来伪静态。
(配置key和crt文件路径的时候,可以直接填写xxx.crt,xxx.key,它会访问到/usr/local/nginx/conf目录下你保存的配置文件的)
注意:
上面一个server {listen 80;……}段是用来301跳转到HTTPS的,不需要可以删掉。
如果要从HTTP跳转到HTTPS,请注意这一行:

server_name www.你的域名.com 你的域名.com;

如果你的首选域名是不带www的,请修改以上部分,将不带www的域名放到前面,否则比如用户输入xxx.com,会301跳到https://www.xxx.com ,然后再301跳转到不带www的地址。
最后,你可以打开SSL LABS测试一下你的SSL安全程度,一般是A+