nginx部署SSL证书,同一个IP绑定多个单域名证书,实现https请求,支持TLSv1.2
一、目录介绍
/usr/local/nginx1.18.0 是ngnix安装后的目录
/usr/local/nginx1.18.0/conf/cert 是证书存放的位置
/usr/local/nginx1.18.0/conf/nginx.conf 是nginx的配置文件
/usr/local/src 是源码tar包下载文件
/usr/local/nginx1.18.0/sbin 是nginx可执行文件父目录 ,在该目录下可以执行nginx命令
二、 注意事项
nginx 和OpenSSL升级和安装时同样的步骤。这里openSSL为1.1.1版本(为了支持TLSv1.2)在安装新的nginx记得先kill掉旧nginx进程。不需要再次安装gcc 和pcre
命令
查看nginx端口号命令
[root@VM-0-10-centos sbin]# netstat -naptu|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12322/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 12322/nginx: master
结束nginx
[root@VM-0-10-centos sbin]# ./nginx -s stop
启动nginx
[root@VM-0-10-centos sbin]# ./nginx -s reload
三、开始安装
- 下载编译环境
yum -y install gcc
yum -y install gcc-c++
yum install -y zlib-devel
- 切换目录 下载pcre
cd /usr/local/src/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35
- 编译安装
cd pcre-8.35
./configure
make && make install
- 查看pcre版本确认安装成功
pcre-config --version
- 安装OpenSSL,用来支持绑定多个单域名证书
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar zxvf ./openssl-1.1.1g.tar.gz
- 安装ngnix
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx1.18.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-1.1.1g
make && make install
- 查看ngnix版本
/usr/local/nginx1.18.0/sbin/nginx -V
- 结果如下即正确
[root@VM-0-10-centos sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.1.1g 21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx1.18.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-1.1.1g
- 配置ngnix.conf
cd /usr/local/nginx1.18.0/conf
- 编辑
vim ngnix.conf
- 按下 i 键,进入编辑模式,实现https请求只需修改https字段
- 默认监听443端口 ,nginx会根据server_name字段自动匹配代理
# HTTPS server
#
server {
listen 443 ssl;
server_name 你自己的域名;
ssl_certificate cert/xxx.pem;
ssl_certificate_key cert/xxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 替换为自己后端的 ip:port
# /demo是一个通配符 参考这 https://www.cnblogs.com/littleorange7/p/12850516.html
location /demo {
proxy_pass http://ip:port;
}
}
- 上传pem 和key
cd /usr/local/nginx1.8.0/conf
mkdir cert
利用rz上传至改文件夹
-
cd /usr/local/nginx1.8.0/sbin
-
在logs文件夹下生成pid文件
-
./nginx -c /usr/local/nginx1.8.0/conf/nginx.conf
-
加载配置文件
-
./nginx -s reload
-
浏览器输入 https://你的域名,结果如下
-
如何访问后端 (demo为网页context-path配置字段,根据项目实际配置的自行更改,getAllEquipmentNames为后端接口名)
-
https://你的域名/demo/getAllEquipmentNames
即可自动代理为
http://ip:port/demo/getAllEquipmentNames
-
参考
https://blog.csdn.net/chen3888015/article/details/80907973?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242
https://www.cnblogs.com/beyang/p/7718463.html
https://www.runoob.com/linux/nginx-install-setup.html
https://cloud.tencent.com/developer/labs/lab/10004?fromSource=gwzcw.436801.436801.436801#stage-4-step-1-help
https://help.aliyun.com/document_detail/98728.html?spm=a2c4g.11186623.2.14.71734215rsDMsc