nginx 同一个端口同时 支持 http 和 https

遇到一个场景:

开始测试时,使用的是 88 端口,比如 www.abc.com:88

后来上线了切换到 80 端口,www.abc.com,

然后升级到 https 默认使用443端口,https://www.abc.com

但是呢,有部分老用户还是在使用 88 和 80 端口,这个好解决,就是一个 http 到 https 的 rewrite。

但是呢,有部分用户会这样访问:

https://www.abc.com:88/

协议使用的是 https 协议,但是呢 端口使用的是 88!

这样就会报错,导致无法访问。

解决起来也很简单,把 80 88 443 三个端口都写到一个 server 段里面,配置 ssl on,这样 如果用户在使用 http 访问时,就会报497错误,

然后用error_page 处理一下:

error_page  497  https://$host$uri;

这样就是可以实现 http https 协议和 80 88 443 端口的任何组合都会正确的跳转到 https访问:

搞定。

error code 497

497 - normal request was sent to HTTPS

当虚拟站点只允许https访问时,当用http访问时nginx会报出497错误码

PS: 其实没有实现 同一个端口同时支持 http 和 https,只是将 http 跳转到 https。

同一个端口不可能实现两种访问协议。

原文地址:https://www.cnblogs.com/digdeep/p/12617075.html

时间: 2024-10-30 01:33:17

nginx 同一个端口同时 支持 http 和 https的相关文章

nginx同一端口监听多个域名和同时监听http,https

1.同一端口监听多个域名 如今公网ip资源越来越珍贵,多域名监听应用非常广泛,就是用一个端口,比如80或者443,监听多个入口域名.如下: server {        listen 443 ssl;        server_name  xxx.xxx.cn;        ssl_certificate         ssl/server.pem;        ssl_certificate_key  ssl/server.key; ...... } 在启用新的域名的时候,只需要另启

【Nginx】将http升级到https并且同时支持http和https两种请求

一.如何将http升级到https 需要满足下面三个: 1.域名 2.nginx 3.SSL证书 一般第三方证书颁发机构下发的证书是收费的,一年好几千. 1) 从腾讯云申请免费的SSL证书,有效期一年,可申请多个  SSL 证书申请地址在这里: https://console.qcloud.com/ssl 申请过程几分钟就可以搞定,主要分两步 1.申请免费的证书,设置手动DNS验证 2.到域名对应的域名解析商处添加解析记录 下载申请好的域名,上传到服务器指定位置 2) nginx配置 2.1.使

nginx的upstream目前支持5种方式的分配

Nginx nginx的upstream目前支持5种方式的分配 FROM: 转载 1 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器, 如果后端服务器down掉, 能自动剔除. 2 weight 指定轮询几率, weight和访问比率成正比, 用于后端服务器性能不均的情况.例如: 1 2 3 4 upstream bakend {     server 192.168.0.14 weight=10;     server 192.168.0.15 weight=10; } 3 ip_

nginx的upstream目前支持5种方式的分配(转)

nginx的upstream目前支持5种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. 例如: upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3.ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问

Puppet利用Nginx多端口实现负载均衡

随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster压力大,解析缓慢,而且时不时出现"time out"之类的报错,那这时有什么优化的办法吗?其实不然,我们可以利用Nginx多端口实现负载均衡,这样在很大程度上优化了puppet的处理能力. [51CTO原创稿件]随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster压力大,解析缓慢,而且时不时出现&

NGINX Plus 现在完全支持 HTTP/2

早些时候,我们发布了支持 HTTP/2 协议的 NGINX Plus R7.作为 HTTP 协议的最新标准,HTTP/2 的设计为现在的 web 应用程序带来了更高的性能和安全性.(LCTT 译注: 开源版本的 NGINX 1.95 也支持 HTTP/2 了.) NGINX Plus 所实现的 HTTP/2 协议可与现有的网站和应用程序进行无缝衔接.只需要一点改变,不管用户选择什么样的浏览器,NGINX Plus 都能为用户同时提供 HTTP/1.x 与HTTP/2 的最佳体验. 要支持 HTT

Nginx+Tomcat反向代理利用certbot实现https

一.利用Let's Encrypt 免费生成HTTPS证书 1.下载安装certbot(Let's Encrypt ) 2.利用certbot生成证书 3.配置nginx的https证书 安装cerbot [[email protected] ~]# wget https://dl.eff.org/certbot-auto [[email protected] ~]# chmod a+x certbot-auto [[email protected] ~]#./certbot-auto 利用ce

Https系列之三:让服务器同时支持http、https,基于spring boot

Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http.https,基于spring boot四:https的SSL证书在Android端基于okhttp,Retrofit的使用 所有文章会优先在:微信公众号"颜家大少"中发布转载请标明出处 前面已介绍了:"https在服务器端的部署,基于tomcat,spring boot&quo

直接端口打印 支持USB接口的打印机吗?解决办法

直接端口打印 支持USB接口的打印机吗?解决办法 www.MyException.Cn  网友分享于:2013-09-15  浏览:488次 直接端口打印 支持USB接口的打印机吗?问题如上,如可以支持,应该怎么搞? ------解决方案--------------------支持,只是端口名称不同而已. ------解决方案--------------------1. 安装一个打印机驱动(保证可以打印测试页)2. 把打印机共享出来3. 然后把端口名填入 \\机器名\打印机共享名 这样,就可实现