CentOS nginx配置SSL证书
一、在可信机构申请ssl证书(如阿里云);
二、nginx配置ssl
1、修改nginx.conf配置文件
server {
listen 80;
listen 443 ssl;
server_name mes.ywlin.cn;
ssl_certificate cert/mes.ywlin.cn.pem;
ssl_certificate_key cert/mes.ywlin.cn.key;
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;
set $node_port 18003;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:$node_port;
}
}
2、重启nginx
cd cd /usr/local/nginx/sbin
./nginx -s reload
三、unknown directive “ssl”错误
错误原因:nginx安装时未配置ssl
处理方法:
1、cd到nginx解压目录,若已删除,则重新下载解压
2、执行配置
./configure --with-http_ssl_module
3、覆盖旧的nginx目录
make
cp objs/nginx /usr/local/nginx/sbin/nginx
也可以make & make install
覆盖安装
4、需要重启nginx
cd cd /usr/local/nginx/sbin
./nginx -s quit
./nginx
四、https访问被拒绝
1、查看端口是否开启
netstat -tlunp
如果发现443端口未监听,则可能是上面重新配置nginx后你没有退出重启nginx
2、查看nginx安全模块是否安装
rpm -qa | grep openssl
rpm -qa | grep mod_ssl
没有安装的话就安装
yum -y install mod_ssl openssl
6、80端口重定向到443
1、修改nginx.conf文件,将原来网站对80端口的监听注释,只留443端口的监听
server {
#listen 80;
listen 443 ssl;
...
}
2、添加新规则,将指定域名的80端口重写到443端口,域名可以是多个
server {
listen 80;
server_name doc.ywlin.cn mes.ywlin.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
3、重启ngin
cd cd /usr/local/nginx/sbin
./nginx -s reload