Docker部署Nginx服务器并实现HTTPS自动重定向

背景:近期有个互联网项目,因是面向C端用户,从安全考虑,请求应该是https,从用户体验角度,应让用户输入域名,而不是ip:port,但一般浏览器都是发起HTTP请求,例如,在浏览器输入:www.XXX.cn 完整请求是http://www.XXX.cn , 但这不是我们的最终请求,最终请求是https://www.XXX.cn 。大部分用户能记住域名,让他们记住协议是比较困难的(非IT专业的人几乎不懂协议概念),所以我们需要实现HTTP请求自动重定向到HTTPS请求。

一、Docker部署nginx

Docker部署nginx并配置好ssl证书,可参考:Nginx(Docker 安装的nginx)配置域名SSL证书_nginx配置域名及ssl证书-CSDN博客

二、实现浏览器HTTP请求自动重定向到HTTPS

2.1修改nginx.conf配置

监听两个端口80(HTTP)、443(HTTPS),然后在80 server块里重定向到443,配置如下:

server {

listen 80;

server_name 域名;

方式一:重定向地址

#return 301 https://server_namerequest_uri;

#方式二:(我使用的是这个)

#rewrite ^(.*) https://host$1 permanent;

rewrite ^(.*) https://域名1 permanent;

#方式三:9001是宿主机开放的端口

#error_page 497 https://host:9001request_uri;

}

server {

listen 443 ssl;

server_name 域名;

#https证书

ssl_certificate "xxx.pem";#证书全路径

ssl_certificate_key "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;

ssl_session_cache shared:SSL:1m;

....

}

2.2 修改nginx启动脚本

#这里宿主机开放的端口为:9001(HTTPS),9002(HTTP)

port=9001

port2=9002

docker rm -f 容器名称

docker run -d \

--name 容器名称 \

--ulimit nofile=65535:65535 \

--ulimit nproc=65535:65535 \

-v /home/data/xxx/web/:/home/data/web/ \

-v /home/data/xxx/nginx.conf:/etc/nginx/nginx.conf \

-v /home/data/xxx/nginx_cert/:/etc/nginx/cert/ \
-p $port: 443 \

-p $port2: 80 \

-e TZ=Asiz/Shanghai \

--restart=always \

nginx

PS:注意宿主机防火墙需要开放 9001、9002端口

三、验证

在浏览器输入www.XXX.cn(最好用手机浏览器试下,电脑有缓存,会出现误判),看是否能重定向到https请求。出现下图则表示成功

相关推荐
大哥您好1 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
Gauss松鼠会2 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
Knight_AL2 小时前
本地服务连接 SaaS 测试环境实践:Docker 部署 Redis 与 RocketMQ 完成接口联调
redis·docker·rocketmq
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
杨云龙UP3 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
无人生还别怕4 小时前
如何安装任意版本docker
运维·docker·容器
土星云SaturnCloud4 小时前
土星云智慧服务区方案:AI视觉+边缘计算+视频存管一体化的全场景智能化落地解析
服务器·人工智能·ai·边缘计算
帷幕落秋5 小时前
Docker镜像加速
运维·docker
帷幕落秋5 小时前
Docker原理-理论基础
运维·docker
TTATTC5 小时前
告别开源 Agent 的本地运维折磨:拆解阿里 QoderWork 的沙盒隔离架构与三级渐进式 Skills 编排实践
docker·开源