Nginx容器代理HTTPS
Posted 花伤情犹在
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx容器代理HTTPS相关的知识,希望对你有一定的参考价值。
前言
😘本文讲解如何在Linux
系统上安装Docker
容器nginx,并且使用Nginx
代理HTTPS
加密请求,如果你不想这么复杂的配置,完全可以使用宝塔来一键部署,自动获取SSL证书等,本文是纯手动配置SSL证书。
提醒
-
😊配置HTTPS加密访问需要先获取网站SSL证书,本教程在已获取SSL证书情况下----->“
方可食用
” -
But 你没有证书可以在你的运营商那里申请免费的SSL证书,或者去宝塔上面申请SSL证书。
💕今日份图片~
演示环境
系统:CentOS 7
Docker:Docker 20.10.10
安装Nginx容器
安装教程在这篇☝文章已经详细讲解~
👀如果你是小白,请在完成上面的文章以后再进行以下操作,如果你已经安装部署好了Nginx容器,容器与本机的映射文件目录和我的可能不一样,请自行将命令中的配置路径改为你的Nginx配置目录
创建配置文件
配置文件名称随意,这里以test为例
touch /mydata/nginx/conf/conf.d/test.conf
编辑配置文件
vim /mydata/nginx/conf/conf.d/test.conf
粘贴以下配置信息
✔这里的配置以test.com为例,将配置信息改成你的网站信息后再进行复制粘贴
注意:证书文件和私钥文件要放在Nginx的conf目录下,配置文件中的证书名称和秘钥名称都要和文件名一一对应
# 监听443端口
server
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name test.com;
#证书文件名称
ssl_certificate test.crt;
#私钥文件名称
ssl_certificate_key test.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /
proxy_pass http://test.com;
测试配置文件是否有问题
进入Nginx命令交互
docker exec -it nginx /bin/bash
验证配置文件问题
cd /sbin & nginx -t
如果没有问题,则会显示以下提示
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果存在,请您重新配置或者根据提示修改存在问题。
配置完毕且验证没有问题记得重启Nginx容器进行测试
docker restart nginx
HTTP自动跳转 HTTPS的安全配置(可选,建议配置)
如果您需要将 HTTP 请求自动重定向到 HTTPS。您可以通过以下操作设置:
- 在页面中添加 JS 脚本
- 在后端程序中添加重定向
- 通过 Web 服务器实现跳转
Nginx
支持 rewrite
(重定向) 功能。若您在编译时没有去掉 pcre
,您可在 HTTP
的 server
中增加 return 301 https://$host$request_uri;
,即可将默认80端口的请求重定向为 HTTPS
。修改如下内容:
说明:
- 未添加注释的配置语句,您按照下述配置即可。
- 由于版本问题,配置文件可能存在不同的写法。例如:
Nginx
版本为nginx/1.15.0
以上请使用listen 443 ssl
代替listen 443
和ssl on
。
# 监听443端口
server
listen 443 ssl;
#填写绑定证书的域名
server_name test.com;
#证书文件名称
ssl_certificate test.crt;
#私钥文件名称
ssl_certificate_key test.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location /
proxy_pass http://test.com;
# 监听80端口----->将http请求转为https请求
server
listen 80;
#填写绑定证书的域名
server_name test.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
说白了就是你在使用http://xx.xx.xx访问网站会被自动转为https://xx.xx.xx
提示:监听80端口的server只用更改server_name即可。
检测SSL配置安全性
教程结束~
以上是关于Nginx容器代理HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
Docker-compose + Nginx SSL反向代理