NGINX 301跳转所有非IP访问至HTTPS

前几天入了个Vultr的$2.5方案用来放这个博客,然后看着每个站点的配置里面都要写一个443端口和一个80端口共两个server{}段,其中80只是用来做301跳转,显得有点,不是那么完美。

出于对NGINX的不太熟练,我研究了一个下午,突然在蹲坑的时候灵机一动,就给解决了,为了不让这个灵机跟着米田共一起冲走,我还是记下来比较好。

上配置:

这是个默认站点(80 default)配置,访问IP和任何不存在的站点,NGINX都会转向这个默认站点。

这个配置解决了这么三个问题:

  1. 如果访问的是IP地址,那么作为默认站点,显示的是 /usr/share/nginx/html/index.html ,我的是 Hello, World!
  2. 如果访问的是任意HTTP站点,就会强制带参数301跳转到同域HTTPS站点上,而且是个万能跳转器,谁把域名做个CNAME到我的IP都会跳。
  3. 每个站点的配置文件,只需要写一段443的server{},不用额外写跳转的站点。

如果认为上面第2条看起来不太安全,或者不太爽,那也可以稍微改一下。
把配置里面的

改成

Nginx就只会跳转到配置里面有的域名,没有的域名如果绑了你的IP,访问的是默认站点,不跳转。

BTW,
吐槽一下,Debian 8自带源也是不靠谱,默认编译的Nginx不带HTTP2,为了SSL Labs的A+评级,我只能用Nginx官方源的包……

-EOF-

Published by

贰壹

忙忙碌碌仍在路上的人,热爱IT,挚爱16。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.