linux 给nginx安装ssl证书,并强制使用https协议访问
环境centos7,影响不大。
停止服务(如何停,看我其他博文)
如果不停止而先去改配置文件后面会麻烦一些(别问我为什么知道),因为停服务的好像会校验nginx.conf文件,不正确的话不能停下来。
改配置文件
强制跳转使用https
error_page 497 https://$host:$server_port$uri?$args;
有两种方法,一种地址重写,第二种当然是我这样捕捉错误,再重写咯。其中用到的$host 这样的,都是ng的内置变量。我这里就用到了$host $server_port $args 三个变量
重点,怎么获取证书
两种,买或者自己做。
其中ssl的钥匙和证书我都放在的conf/cert/中。
买的有贵的,也有免费试用的,就看自己咯。反正我是自己做的。
自己做的一个弊端呢,就是第一次访问的时候,浏览器认为不安全。
自制证书呢,可以使用openSSL工具。
参考:
https://blog.****.net/gengxiaoming7/article/details/78505107
https://www.cnblogs.com/lihuang/articles/4205540.html
调整完配置文件
核验文件的合法性
./home/deployer/nginx/sbin/nginx -t -c /home/deployer/nginx/conf/nginx.conf //验证配置文件的合法性
一般这会会提示ssl模块缺失,这个问题在windows上是不会出现的,唯独linux版的nginx有这步操作。当然也可以查看现有的ng服务器是否安装了ssl模块。
./home/deployer/nginx/sbin/nginx -V
找到你的安装包,进入。可直接运行configure 添加ssl模块,生成新的nginx文件。
./configure --with-http_ssl_module --prefix=/home/deployer/nginx
然后输入命令make,千万不要用make install,这个命令是初次安装ng时用的
这会在安装包的obj文件夹中生成一个新的nginx文件(不是我懒不写名字,而是它就叫这名字)
在运行configure一定要加prefix并加上你现安装好的ng路劲,不然会用默认路径,到时这个文件就不能用了。(被坑过)
然后在备份的情况下,就可以将刚才那个新的nginx文件(明显比以前的大上几M),替换掉/home/deployer/nginx/sbin 中的ng文件了。
再次验证配置文件应该就会提示success了。
./home/deployer/nginx/sbin/nginx -t -c /home/deployer/nginx/conf/nginx.conf //验证配置文件的合法性
然后启动ng就,完成了。
lucky dog to you.