前言:app上架的时候审核需求中的一条就是需要用域名访问,并且必须用https请求。
http和https的区别:
1.HTTP协议是一种使用明文数据传输的网络协议。明文数据传输的隐患就不用我多说了吧。而HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。这个加密就是ssl证书,
下面我们就要用到这个ssl证书,这个证书是需要域名申请账号去申请并绑定域名。成功后就可以下载ssl证书,我们需要的部分是后缀为.pem的证书和后后缀为.key的秘钥文件。、
主菜来了:
一.在nginx.conf里面需要改变的server的配置,原来http默认端口是80.https默认端口是443.在service_name下面增加如下配置:
server {
listen 8090 ssl;
server_name 需要访问的域名
ssl_certificate /usr/local/nginx/https/3080940_bjytly.hhtz.gov.cn.pem;
ssl_certificate_key /usr/local/nginx/https/3080940_bjytly.hhtz.gov.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_prefer_server_ciphers on;
}
备注:监听端口后面一定要加ssl,ssl_certificate 和ssl_certificate_key 的路径自己定,只要将.pem和.key的文件放到自己想要的位置就可以。配置完后校验nginx配置的时候如果出现了nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:121报错。那么就是nginx缺少了ssl模块。我们新增ssl模块就行。如果没有报错,那么下面请忽略。
二.nginx新增ssl模块(这里执行的时候先备份下nginx.conf文件以防万一)
1.进入ngins安装包的位置。如:我的是:/usr/local/nginx-1.4.2
2.查看nginx现在配置命令:/usr/local/nginx/sbin/nginx -V 如下图:
箭头指的就是已有模块。我是因为配置好了,所以后面会有http_ssl_module,没配的是没有的。如果箭头所指的位置有值,复制下来。执行命令:./configure --刚刚复制的值(如果有的话) --with-http_ssl_module
3.重新编译nginx命令: make
4.关闭现在运行的nginx。命令:/usr/local/nginx/sbin/nginx -s stop
如果还是报错:nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:121
就直接杀掉nginx进程
5.将编译好的nginx覆盖原有的nginx
命令:cp ./objs/nginx /usr/local/nginx/sbin/
系统会提示是否覆盖,输入y。
6.启动nginx就行了,可以直接用https访问了。
nginx中有几个常用的命令:./nginx -s reload (重启nginx命令)其中的-s 代表的是向主进程发送信号。其中信号有 4 个,stop, quit, reopen, reload。./nginx -c /usr/local/nginx/conf/nginx.conf(nginx启动时读取指定配置文件) -c 指定一个文件,即指定配件文件。nginx启动默认读取的是conf/nginx.conf。
三.如果要直接输入域名让默认的http协议转为https
1.在新增的ssl配置下加一行配置:error_page 497 301 https://$http_host$request_uri;
备注:这是当https监听端口不是默认443的时候可以这样做。