欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx设置http https共存 nginxhttps 

程序员文章站 2022-03-04 18:25:16
...
先前是已经安装了nginx,没有安装ssl模块
所以先给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 https