用429重定向HTTP到HTTPS

时间:11-11来源:作者:点击数:

正文

Nginx 要重定向 HTTP 到 HTTPS,一般是新建一个监听 80 端口的server,然后 302 HTTP 请求到HTTPS。但是这个方法需要两个不同的端口,即一个输入URL默认的80端口和443端口。

一般会有如下形式:

server {
listen 443 ssl;
server_name ***.***;
****;
***;
----
}

server {
listen 80;
server_name ***.***;

location /
{ return 302 https://$hostrequest_uri;}
}

但是如果是非特殊端口拿来承载HTTPS网站,再弄一个HTTP端口重定向到另一个HTTPS的端口就觉得怪怪的。

于是找到 HTTP 的 497 状态码。

497 状态码是当用户以 HTTP 协议访问开启 SSL 的server时,Nginx 会返回该用户此状态码。

那我们可以利用将此状态码重定向到 https。

形如以下:

server{
listen 8043 ssl;
server_name ***.***;

error_page  497 https://$host:8043$request_uri;
#需要更改重定向目的地址的端口号,和上述监听的端口号一致。
}

此处是利用 Nginx 自定义 error Page 错误页的功能,在Nginx给出497错误时,返回用户一个自定义的页面,这个页面把用户本来访问的页面重定向到HTTPS。

那么目的即可达成。

碎碎念

这个应用场景在我这里是给家里的网页服务加上SSL并自动重定向。

家宽的标准端口,类似80 443 等低位端口一般都不会开放,那就只能用至少四位的非标准端口,这个时候就不存在需要把浏览器默认URL端口为80重定向到443的情况,我希望能够我输入一个端口,即便我懒得没有输入HTTPS,他也能够重定向到HTTPS。

上一篇:高并发场景下的缓存有哪些常见的问题? 下一篇:很抱歉没有了
推荐内容
相关内容
栏目更新
栏目热门