docker中nginx添加SSL证书,并支持http和https连接

背景

最近在弄一个小程序,小程序上线需要后端https访问。那我原先的需要在nginx中添加SSL证书

关于SSL证书,可以去阿里云或者腾讯云去申请。不过现在个人免费版只有3个月的有效期。我们申请到证书后,放到nginx中

我们新增了一个cert文件夹

bash 复制代码
mkdir cert

然后将证书的key和pom丢进去

因为我的项目之前在docker里已经用了nginx做代理,所以我这里就不再赘述docker安装nginx的流程。

就直接修改nginx的配置文件,需要在http块内再配置一个server

bash 复制代码
    server {
     #HTTPS的默认访问端口443。
     #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
     listen 443 ssl;
     
     #填写证书绑定的域名
     server_name www.xxxx.com;
 
     #填写证书文件 容器内的路径,启动容器的时候挂载上就行
     ssl_certificate /etc/nginx/conf/cert/www.xx.com.pem;
     #填写证书私钥文件绝对路径
     ssl_certificate_key /etc/nginx/conf/cert/www.xx.com.key;
 
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;
	 
     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

     #表示优先使用服务端加密套件。默认开启
     ssl_prefer_server_ciphers on;
 
 
    location / {
            alias /img_data/ftp/ftpuser/upload/;
            autoindex on;
            index index.html index.htm;

    }
    location /main/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://xxxxxx:9005/main/; # 反向代理
    }
}

另外我们还做了一个端口转发,把小程序的访问转到了9005端口

然后启动容器

bash 复制代码
docker run  -it --restart=always -p 9001:80 -p 9006:443 --name nginx-hy4 -v /home/nginx/conf/nginxnew.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/conf/cert:/etc/nginx/conf/cert -v /img_data/ftp/ftpuser/upload/:/img_data/ftp/ftpuser/upload/  nginx:latest

9001是http的端口,9006是https的端口

相关推荐
杨浦老苏3 小时前
开源音乐管理软件Melody
docker·群晖·多媒体
千夜啊3 小时前
Nginx 运维开发高频面试题详解
运维·nginx·运维开发
esmember3 小时前
电路研究9.2.6——合宙Air780EP中HTTP——HTTP GET 相关命令使用方法研究
网络·网络协议·http·at指令
杨浦老苏5 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
JunLan~7 小时前
Docker 部署 GLPI(IT 资产管理软件系统)
运维·docker·容器
特立独行的猫a8 小时前
使用 Docker(Podman) 部署 MongoDB 数据库及使用详解
数据库·docker·podman
霸王蟹9 小时前
http和https的区别?
网络·笔记·网络协议·学习·http·https
精通HelloWorld!9 小时前
使用HttpClient和HttpRequest发送HTTP请求
java·spring boot·网络协议·spring·http
LUCIAZZZ10 小时前
基于Docker以KRaft模式快速部署Kafka
java·运维·spring·docker·容器·kafka
泪不是Web妳而流10 小时前
BurpSuite抓包与HTTP基础
网络·经验分享·网络协议·安全·http·网络安全·学习方法