Nginx实现一个端口开启https和http并全站https

一、写在前面

因服务部署在家用宽带内,运营商屏蔽了常用的一些服务端口,如 80 443 8080 139 445 等。

我们在家用宽带内部署了一套网站服务,运营商提供了不固定的公网IP,于是通过 DDNS实现了域名解析到这个随机不固定的公网IP上。

于是我们部署了一套https的服务,https://hamm.cn:888,没有办法,必须得手动带上一个端口号。然后将 888 端口进行了端口转发到内网服务器的 80 端口上。

这里出现问题了,如果客户直接在浏览器输入 hamm.cn:888 来访问服务,部分浏览器会自动使用 http 协议来访问,所以会访问不到我们的网站。

所以又只能再起一个端口来实现这个需求,于是又会有一个 http://hamm.cn:999 来对应 http 协议。

客户需要记两个端口号,而且容易将http和https的端口记混淆导致无法正常访问。

那么如何来解决这个问题呢?能不能使用 一个端口 来实现 httphttps 都可正常访问到,不丢失流量呢?

二、HTTP协议状态码 497

当客户端试图访问一个需要 HTTPS 的资源,但以 HTTP 方式发送请求时,服务器可能会返回 497 这个状态码,表示它无法处理这样的请求转换。

所以,只需要在 nginx 中配置一下 497 错误的重定向即可:

conf 复制代码
error_page 497 https://$http_host$request_uri;

接下来,通过 http://hamm.cn:888 访问,会得到一个 497 错误,nginx 会将错误捕获并转到 https://hamm.cn:888 对应的服务上。

我们就实现了一个端口抓住所有的流量,除了一个端口号之外,客户也没有其他的记忆成本了。

三、以上

That's all.

每日一水,今天水更多。

相关推荐
IT成长日记9 分钟前
05【Linux经典命令】Linux 用户管理全面指南:从基础到高级操作
linux·运维·服务器·用户管理·命令
资讯第一线4 小时前
Windows系统工具:WinToolsPlus 之 SQL Server Suspect/质疑/置疑/可疑/单用户等 修复
运维
惊起白鸽4505 小时前
LVS负载均衡
运维·负载均衡·lvs
伤不起bb6 小时前
NoSQL 之 Redis 配置与优化
linux·运维·数据库·redis·nosql
广东数字化转型6 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
love530love7 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
啵啵学习7 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
数字芯片实验室8 小时前
寄存器模型生成:从手工到自动化
运维·自动化
浩浩测试一下8 小时前
Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
网络·网络协议·tcp/ip·安全·网络安全·php
冰橙子id8 小时前
linux——磁盘和文件系统管理
linux·运维·服务器