linux上nginx安装SSL模块用以配置https
因为最近需要开发一个小程序app,需要配置上https
1.申请一个ssl证书
目前使用的是阿里云的免费证书,其它厂商应该也有类似免费的,对证书要求不是很高的话可以使用这个。
购买之后绑定域名进行即可,这个免费的证书有个好处就是审核相对简单很多。
2.下载证书,我们是配置nginx自然是下载nginx类型,后续配置ssl会用到
3.nginx安装ssl模块,如果以前有安装过ssl模块此处可以跳过
1.nginx -V 查看当前安装了哪些模块和nginx版本,红线处代表我已经安装过ssl模块
2.没有安装的话就切换到源码目录下执行命令编译ssl模块
./configure --prefix=/opt/software/nginx --with-http_stub_status_module --with-http_ssl_module
3.此时可能会报错,说找不到configure文件,这是因为当前并不是nginx源码目录。如果当时安装nginx是用yun命令之类的安装的,那么安装完的是编译后的文件,自然就没有configure等文件。源码目录如下:
4.此时可以去nginx官网http://nginx.org/en/下载tar.gz的源码包,版本尽量一致
5.我这边已经下载好了,如下图:nginx目录就是我一开始安装的nginx,nginx-1.9.12是刚刚在官网下载的
6.然后接着第二步运行make命令
7.make完之后在objs目录下会生成一个nginx文件
8.先将原nginx进程停掉,将objs目录下的nginx文件覆盖原先nginx/sbin/目录下的nginx文件(注意:覆盖前一定要先备份原来的,不然出问题没地方哭)。如果其它地方有已经安装好ssl模块的nginx文件也可以直接拷过来,拷过来的时候可能不是可执行文件(绿色),用chmod +x ./nginx命令将其变成可执行文件
9.然后重新启动nginx就好了,启动完之后可以再用nginx -V命令查看一下ssl模块安装好没有
4.配置nginx的ssl
1.将上面第二个步骤下载的证书压缩包解压,复制 pem,key 文件到 Nginx 安装目录下的 conf 目录(丢其它地方一样的,我是方便找)
2.ssl_certificate处配置pem文件的路径,ssl_certificate_key处配置key文件的路径,localtion按照自己的需求配置就行了
3.保存重启nginx
4.如果启动了防火墙需要打开443端口,我这边防火墙是firewall
5.添加:firewall-cmd --znotallow=public --add-port=443/tcp --permanent
6.加载:firewall-cmd --reload
7.查看指定端口:firewall-cmd --znotallow=public --query-port=443/tcp
8.查看所有打开的端口:firewall-cmd --znotallow=public --list-ports
注:如果是使用的阿里云的负载均衡SLB需要配置https监听
先指定SSL部署区域
然后在负载均衡SLB上配置443监听,我这边已经配置好了
如果想配置的话左上角添加监听
第一步选择HTTPS,端口固定为443,高级配置没特别需求默认就行,然后点击下一步
第二步选择证书,如果你有证书部署到SLB所在的区域,那么此处就可以看到对应证书,高级配置没有特别需求默认就行,选择然后下一步
这边没有特别需求的话选择默认服务器组,然后服务器的端口为80,权重根据自己的需求配置,然后下一步
然后健康检查根据自己的需求打开或者关闭,然后下一步然后提交就行了