首先,我们一般开发的服务为http服务,并用nginx代理,若要支持https方式访问,则必须要生成并安装ssl证书
1.第一步 生成证书
(1)进入“/usr/local/nginx”目录,执行以下命令,生成RSA密钥。
----须知---
对于CentOS 7.6或CentOS 8.1下通过镜像站RPM包安装的Nginx,请将以下命令中的“/usr/local/nginx”目录替换为“/etc/nginx”。
cd /usr/local/nginx openssl genrsa -des3 -out server_2048.key 2048
系统提示需要两次输入密码,请设置为相同的密码,完成后会生成server_2048.key文件。
说明 可通过如下命令实现免密码使用此server_2048.key文件。
openssl rsa -in server_2048.key -out server_2048.key
(2)创建服务器证书的申请文件。
openssl req -new -key server_2048.key -out server_2048.csr
输入(1)中设置的密码。Country Name填写为CN,其他选项直接按回车即可。如果已经设置免密码使用server_2048.key文件,则无需输入密码。
(3)重写RSA密钥。
openssl rsa -in server_2048.key -out server_2048.key
输入1中设置的密码。如果已经设置免密码使用server_2048.key文件,则无需输入密码。
(4)生成证书。
openssl x509 -req -days 365 -in server_2048.csr -signkey server_2048.key -out server_2048.crt
2.第二步 Nginx的ssl模块安装
ngixn需要支持ssl模块,所以需要需要安装。可参考https://www.jb51.net/server/317094cpp.htm
进入到目录的sbin目录下,输入
#注意这里是大写的V,小写的只显示版本号
./nginx -V
如果出现 (configure arguments: --with-http_ssl_module), 则已安装(下面的步骤可以跳过,直接进行第五步)。 一般情况下都是不存在ssl模块的,接下来进入到你的解压缩后的nginx目录,注意这里不是nginx安装目录,是解压缩后的目录。
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
然后执行
make
#切记不要执行make install,否则会重新安装nginx
接下来使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务
#停止nginx服务
./nginx -s stop
#替换之前的nginx
cp /usr/nginx/objs/nginx /usr/local/nginx/sbin
成功之后,进入到nginx安装目录下,查看ssl时候成功
./nginx -V
#可以看到这里出现了configure arguments: --with-http_ssl_module 证明已经安装成功
3.第三步 配置HTTPS功能 Http功能
配置HTTPS功能
---须知---
对于CentOS 7.6或CentOS 8.1下通过镜像站RPM包安装的Nginx 1.14.2或Nginx 1.19.3版本,请将以下命令中的“/usr/local/nginx”目录替换为“/etc/nginx”。
(1)打开nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
(2)按“i”进入编辑模式,修改以下内容。
将“#user nobody;”修改为“user root;”。
将“# HTTPS server”模块下的“#”全部去掉。
将“# HTTPS server”模块下的“listen 443 ssl;”修改为“listen 20000 ssl;”。
将“# HTTPS server”模块下的“ssl_certificate cert.pem;”修改为“ssl_certificate /usr/local/nginx/server_2048.crt;”。
将“# HTTPS server”模块下的“ssl_certificate_key cert.key;”修改为“ssl_certificate_key /usr/local/nginx/server_2048.key;”。
修改后内容:
user root;
...
# HTTPS server
#
server {
listen 20000 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/server_2048.crt;
ssl_certificate_key /usr/local/nginx/server_2048.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;
}
}
配置HTTP功能
(1)打开nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
按“i”进入编辑模式,修改以下内容。
将“#user nobody;”修改为“user root;”。
将“http”模块下的“listen 80;”修改为“listen 10000;”。
若您是在CentOS 8.1(7.6)系统下使用RPM方式安装Nginx 1.14.2(1.19.3),那么HTTP功能的listen监测端口需要在“/etc/nginx/conf.d/default.conf”文件中修改。
修改后内容:
user root;
...
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 10000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /xxhcl {
proxy_pass http://10.1.1.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x_real_ipP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 4s;
proxy_read_timeout 1200s;
proxy_send_timeout 1200s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
...
保存之后重新ngxin即可完成部署,如有问题可查看/logs/下log日志
参考文献https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/Nginx/kunpengnginx_02_0016.html