nginx设置http https共存 nginxhttps
程序员文章站
2022-03-04 18:25:16
...
先前是已经安装了nginx,没有安装ssl模块
所以先给nginx安装ssl模块
1.看下编译安装nginx的时候,都编译安装的哪些模块。
2.进入之前下载并解压了的源码包目录;重新编译nginx
注意:这一步千万不能 make install ;不然会把之前已经安装的nginx 覆盖掉
3.需要替换nginx二进制文件,先停止掉nginx进程;备份一下原来的启动脚本。
4.查看nginx的模块,看下是否把需要的模块编译进去了
5.重新启动nginx;
好了,此时已经给nginx安装了ssl模块,下面要为nginx生成ssl证书
6.首先执行如下命令生成一个key
7.然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
由于生成时候必须输入密码。你可以输入后再删掉。
8.然后根据这个key文件生成证书请求文件
以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)
9.最后根据这2个文件生成crt证书文件
这里365是证书有效期。这个大家随意。最后使用到的文件是key和crt文件。
10.如果需要用pfx 可以用以下命令生成
好了,至此生成完证书的生成,下面进行nginx配置文件修改,使其拥有https访问能力
11.修改nginx.conf
12.重启nginx
好了,至此nginx就能通过http和https访问了
所以先给nginx安装ssl模块
1.看下编译安装nginx的时候,都编译安装的哪些模块。
[root@zabbix ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx
2.进入之前下载并解压了的源码包目录;重新编译nginx
[root@zabbix nginx-1.8.0]# cd /usr/local/src/nginx-1.8.0 [root@zabbix nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module [root@zabbix nginx-1.8.0]# make
注意:这一步千万不能 make install ;不然会把之前已经安装的nginx 覆盖掉
3.需要替换nginx二进制文件,先停止掉nginx进程;备份一下原来的启动脚本。
[root@zabbix nginx-1.8.0]# /etc/init.d/nginx stop [root@zabbix nginx-1.8.0]# cp /etc/init.d/nginx /etc/init.d/nginx.bak [root@zabbix nginx-1.8.0]# cp objs/nginx /usr/local/nginx/sbin/ cp: overwrite `/usr/local/nginx/sbin/nginx'? yes
4.查看nginx的模块,看下是否把需要的模块编译进去了
[root@zabbix ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
5.重新启动nginx;
[root@zabbix nginx-1.8.0]# /etc/init.d/nginx start
好了,此时已经给nginx安装了ssl模块,下面要为nginx生成ssl证书
6.首先执行如下命令生成一个key
openssl genrsa -des3 -out ssl.key 1024
7.然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
由于生成时候必须输入密码。你可以输入后再删掉。
mv ssl.key xxx.key openssl rsa -in xxx.key -out ssl.key rm xxx.key
8.然后根据这个key文件生成证书请求文件
openssl req -new -key ssl.key -out ssl.csr
以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)
9.最后根据这2个文件生成crt证书文件
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
这里365是证书有效期。这个大家随意。最后使用到的文件是key和crt文件。
10.如果需要用pfx 可以用以下命令生成
openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx
好了,至此生成完证书的生成,下面进行nginx配置文件修改,使其拥有https访问能力
11.修改nginx.conf
server { ssi on; listen 80; listen 443 ssl; ssl_certificate /opt/deploy/cert/ssl.crt; ssl_certificate_key /opt/deploy/cert/ssl.key;
12.重启nginx
sbin/nginx -s reload
好了,至此nginx就能通过http和https访问了
推荐阅读
-
nginx配置文件 http 强跳转 https
-
详解nginx服务器http重定向到https的正确写法
-
详解NGINX访问https跳转到http的解决方法
-
使用squid搭建http和https的代理服务器设置指南
-
Windows Server 2016 IIS10 设置HTTPS HTTP/2 并跑分到 A+
-
nginx强制使用https访问的方法(http跳转到https)
-
Nginx配置同一个域名同时支持http与https两种方式访问实现
-
Nginx同时支持Http和Https的配置详解
-
nginx 与 jboss 配置http自动跳转https
-
Nginx 配置SSL证书 HTTP/HTTPS都能访问