当前位置: 首页 > article >正文

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_name$request_uri;

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

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

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

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

        #error_page 497 https://$host:9001$request_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请求。出现下图则表示成功


http://www.kler.cn/a/391381.html

相关文章:

  • 第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
  • Pytorch | 从零构建MobileNet对CIFAR10进行分类
  • STM32F407寄存器点灯
  • 贪心算法 part01
  • 【Java基础面试题016】JavaObject类中有什么主要方法,作用是什么?
  • el-form组件中的常用属性
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-成绩排序
  • 【ECMAScript标准规范】
  • 「QT」基础数据类 之 QVariant 通用数据类
  • PHY6235超低功耗蓝牙和专有2.4G应用的SOC芯片内置MCU
  • Git 中的 patch 功能
  • 生成式模型的热点新闻和进展
  • 第8章利用CSS制作导航菜单
  • 鸿蒙ZRouter动态路由框架—生命周期管理能力
  • 论云游戏的性能与性价比,ToDesk、青椒云、顺网云游戏等具体实操看这篇就够了
  • SAP ABAP开发学习——function alv复选框设置
  • [论文阅读]Enhanced Membership Inference Attacks against Machine Learning Models
  • jmeter基础05_第1个http请求
  • Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
  • 22. 记录架构
  • 【热门主题】000041 网络安全:守护数字世界的坚固防线
  • Javascript笔记(一):闭包函数
  • 状态空间方程离散化(Matlab符号函数)卡尔曼
  • 看不见的力量——超声技术在工业中的应用
  • Spring Boot编程训练系统:深入设计与实现
  • [Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明