准备工作:
1、服务器已安装nginx并可以正常访问
2、拥有ssl证书
3、服务器防火墙放行443端口
在配置ssl证书之前,要确保你的nginx已经安装了ssl模块,进入nginx的安装目录,输入:
./nginx -V
如果出现 (configure arguments: --with-http_ssl_module),则已安装
若没有提示,则证明不存在ssl模块的,接下来进入到你的解压缩后的nginx目录,注意这里不是nginx安装目录,是我们从nginx官网下载的安装包,解压缩后的目录,进入目录后,输入:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
上面的命令要记住修改“/usr/local/nginx”为自己服务器中nginx的安装路径
然后执行:make
#切记不要执行make install,否则会重新安装nginx
上述操作执行完成以后,你的目录下会出现objs文件夹,文件夹内存在nginx文件,使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下
再次执行:./nginx -V
这时nginx的ssl就安装成功了
期间可能会报缺失PCRE库的错误,通过以下命令解决:
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
你可能还需要安装
sudo apt-get install openssl libssl-dev
然后打开nginx.conf,添加一个新的server段落,在其中输入下面代码:
listen 443 ssl;
server_name 你的域名;
index index.php index.html index.htm;
root 项目根目录;
ssl_certificate crt或pem文件路径;
ssl_certificate_key key文件路径;
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;
然后重启nginx,配置成功
nginx强制https,两种写法,写在server段中
1、使用urlRewirte:rewrite ^(.*)$ https://$host$1 permanent;
2、使用301跳转:return 301 https://$server_name$request_uri;
对于不同格式秘钥的说明:
不同服务商提供的ssl证书秘钥,有的为.pem文件(比如阿里云),有的是.crt文件(比如腾讯云)
经过我的测试,不用刻意转换为某种文件,ssl_certificate对应的文件既可以是.pem,也可以是.crt,加密方式不用做修改,两种文件都可被nginx接受,并且正常使用