1、nginx的ssl模块安装
查看nginx是否安装 http_ssl_module 模块。
命令:/usr/local/nginx/sbin/nginx -V
如果出现 configure arguments: --with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)。
因为https ,要用到http_ssl_module模块,但http_ssl_module并不属于nginx的基本模块所以自己重新编译添加
2、进入之前下载解压的nginx源码包目录,如果没有就重新下载。
命令:cd /usr/local/nginx-1.18.0
配置ssl模块;
命令:./configure --prefix=/usr/local/nginx --with-http_ssl_module
使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。(这一步千万不能 make install ;不然会把之前已经安装的nginx 覆盖掉)
命令:make
3、覆盖安装
先停掉nginx
命令:systemctl stop nginx.service
用新的 nginx 文件覆盖当前的 nginx 文件。
命令:cp ./objs/nginx /usr/local/nginx/sbin/
(cp: overwrite `/usr/local/nginx/sbin/nginx‘? 会提示是否要覆盖,输入y)
4、再次查看安装模块
命令:/usr/local/nginx/sbin/nginx -V
configure arguments: --with-http_ssl_module说明ssl模块已安装
5、重新启动nginx
命令:systemctl start nginx.service
查看是否正常监听80端口
开始配置https
6、开放CentOS系统 443端口
命令:firewall-cmd --zone=public --add-port=443/tcp --permanent
重启防火墙
命令:firewall-cmd --reload
7、配置Nginx监听80端口,反向代理Asp.net Core项目
找到nginx.conf文件,并查看第一个监听80端口的Server,修改成
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
然后查看配置文件是否修改正确,之后重启Nginx
以下命令必须进入 nginx/sbin目录下才能执行
./nginx -v 查看Nginx的版本
./nginx -t 修改完配置文件后查看是否正确
./nginx -s reload 重启Nginx
8、上传证书
9、修改nginx.conf文件,将监听443端口的server改成
server {
listen 443 ssl;
server_name www.XXX.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.XXX.com_bundle.crt;
ssl_certificate_key 2_www.XXX.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
系统检查配置文件提示“the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /usr/local/nginx/conf/nginx.conf:105”
原因:Nginx 1.15.x 版本在开启ssl的时候不再需要显式的配置 SSL ON 了
如果配置了,会出现这个警告
解决方案:直接删掉 SSL ON 这个配置就好了
-----------
listen 443 后面必须加ssl 否则 https请求无法打开,原因后续再查
-----------
修改好后,重启nginx
命令:./nginx -s reload
外部用https访问网站正常
参考链接:https://blog.csdn.net/weixin_37264997/article/details/84525444
参考链接:https://blog.csdn.net/tyyh08/article/details/80633655?utm_source=blogxgwz1
参考链接:https://www.wandouip.com/t5i198998/
博客原链接:https://www.jzlnice.com/article/detail/1297910810282168321