nginx实现https访问

                     nginx实现https访问

背景:

项目背景是在开发APP发布平台,ios的安装包的下载和自动更新等操作需要https获取plist文件,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 域名.com 要求通过HTTPS://域名.com进行访问.

SSL英文名为Secure Socket Layer,安全套接字层。SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输.

 

一,环境准备

1.安装nginx,2.获取安全证书

 1.安装nginx(已安装可以跳过)

第一步:下载nginx压缩包

nginx官方下载地址:http://nginx.org/en/download.html

wget命令下载:

 wget -c https://nginx.org/download/nginx-1.16.1.tar.gz

注意:这一步最好在自己的目标目录进行操作,我一般是把压缩包下载到/usr/local目录下。

第二步:配置nginx安装所需的环境

1. 安装gcc

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境。安装指令如下:

 yum install gcc-c++

2. 安装PCRE pcre-devel

Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码。安装指令如下:

 yum install -y pcre pcre-devel

3.安装zlib

zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。安装指令如下:

 yum install -y zlib zlib-devel

4.安装Open SSL

nginx不仅支持 http协议,还支持 https(即在 ssl 协议上传输 http),如果使用了 https,需要安装 OpenSSL 库。安装指令如下:

 yum install -y openssl openssl-devel

第三步:解压nginx压缩包并安装

将压缩包进行解压

 tar -zxvf nginx-1.16.1.tar.gz

解压之后,进入加压文件,即cd nginx-1.16.1。
然后进行配置,推荐使用默认配置,直接./configure就好了,如下图所示:

nginx实现https访问

第四步:编译安装nginx
这里和redis的编译安装比较类似,首先在当前目录(/usr/local/nginx-1.16.1)进行编译。输入make即可

 make

然后回车,如果编译出错,请检查是否前面的4个安装都没有问题。
编译成功之后,就可以安装了,输入以下指令:

 make install

ok,安装成功。
这时候返回上一级目录,就会发现多了nginx目录,接下来,启动nginx。

nginx实现https访问

第五步:启动nginx

进入/usr/local/nginx/sbin目录,输入./nginx即可启动nginx

 ./nginx

关闭nginx

 ./nginx -s quit  或者 ./nginx -s stop 

重启nginx

 ./nginx -s reload

查看nginx进程

 ps aux|grep nginx

设置nginx开机启动,只需在rc.local增加启动代码即可。

 vim /etc/rc.local

然后在底部增加/usr/local/nginx/sbin/nginx

nginx实现https访问

nginx配置文件

/usr/local/nginx/conf目录可修改nginx的配置文件 -> vim nginx.conf

修改域名以及端口等

 2.ssl证书:

 1. 配置SSL模块首先需要CA证书,CA证书可以自己手动颁发也可以在阿里云申请,本人在腾讯云上申请的证书。

 2. 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数.

获取证书:

在成功购买域名并通过备案后

1.进入控制台

nginx实现https访问

2.下载证书

nginx实现https访问

nginx实现https访问

下载下来的文件:

nginx实现https访问

nginx文件下:

nginx实现https访问

二、实现nginx+https

1.安装ssl模块

正常安装nginx一般ssl模块并未被安装

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数

解决方案:

nginx缺少http_ssl_module模块,编译安装的时候带上–with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/nginx-1.16.1目录

(1)切换到源码包:

 cd /usr/local/nginx-1.16.1

(2)配置信息:

 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

(3)配置完成后,运行make进行编译,千万不要进行make install,否则就是覆盖安装。

 make

(4)然后备份原有已经安装好的nginx

 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

(5)停止Nginx,正常命令直接 nginx -s stop就可以

 nginx -s stop

如果关不掉,就直接Kill掉进程。ps aux | grep 进程名 查看进程占用的PID号。

(6)将刚刚编译好的nginx覆盖掉原有的nginx

 cp /usr/local/nginx-1.16.1/objs/nginx  /usr/local/nginx/sbin 

(7)启动nginx

在路径:/usr/local/nginx/sbin下

 ./nginx

(8)通过下面的命令查看是否已经加入成功。

 nginx -V

2.在Nginx配置文件中安装证书

文件说明:

1. 证书文件“证书名称.crt‘’,包含两段内容,请不要删除任何一段内容。

2. 如果是证书系统创建的CSR,还包含:证书私钥文件“证书名称.key”。

( 1 ) 在Nginx的配置文件所在的目录下创建cert文件夹,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为“证书名称.key”;

( 2 ) 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:

    # HTTPS server     #     #server {     #    listen       443 ssl;     #    server_name  localhost;      #    ssl_certificate      cert.pem;     #    ssl_certificate_key  cert.key;      #    ssl_session_cache    shared:SSL:1m;     #    ssl_session_timeout  5m;      #    ssl_ciphers  HIGH:!aNULL:!MD5;     #    ssl_prefer_server_ciphers  on;      #    location / {     #        root   html;     #        index  index.html index.htm;     #    }     #}

( 3 ) 将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :

  server {         listen       8890 ssl;         server_name  localhost;         ssl_certificate      cert/1_luckilye.cn_bundle.crt;         ssl_certificate_key  cert/2_luckilye.cn.key;          ssl_session_cache    shared:SSL:1m;         ssl_session_timeout  5m;          ssl_ciphers  HIGH:!aNULL:!MD5;         ssl_prefer_server_ciphers  on;          location / {             root   html;             index  index.html index.htm;         }     } 	

( 4 )重启 Nginx。

 nginx -s reload 

( 5 ) 通过 https 方式访问您的站点,测试站点证书的安装配置。 在浏览器中输入https://域名,如下图所示,则说明配置成功。

nginx实现https访问

在配置时有可能碰到的错误:

nginx 报错 : [warn] the “ssl” directive is deprecated, use the “listen … ssl” directive instead

解决:

1. 如果配置了SSL ON请删掉

2.

listen 443;

修改为

listen 443 ssl;

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » nginx实现https访问

提供最优质的资源集合

立即查看 了解详情