技术学习

Linux 服务器 Nginx 禁止空主机头配置

功能

禁止IP直接访问、防止域名恶意解析

简单点:不设置这个通过IP可以直接访问,同时当别人的域名解析到你的域名时可以通过他的域名看到你服务器配置了网站的内容

老早就知道这个问题,但是由于不是专业运维不大懂专业术语叫啥,最近公司碰到这个问题,能肯定是nginx配置问题,最后查阅后了解这个叫空主机头

实现

#关闭未绑定的域名-http
    server {
        listen 80 default_server;
        server_name _ ;
        return 301 https://www.qqzmly.com/;
    }

    #关闭未绑定的域名-https
    server {
        listen 443 default_server;
        server_name _ ;
        ssl on;
        ssl_certificate cert/1_www.qqzmly.com_bundle.crt;
        ssl_certificate_key cert/2_www.qqzmly.com.key;
        return 301 https://www.qqzmly.com/;
    }

实现过程中发现 443https这块配置 需要带上ssl上面代码演示的三条

Nginx下 return 和 rewrite在 301重定向上的区别

唯一区别:正则匹配的性能区别

rewrite ^/(.*)$ https://example.com/$1;
rewrite ^ https://example.com$request_uri? permanent;
return 301 https://example.com$request_uri;

第一种 rewrite 写法是抓取所有的 URI 再减去开头第一个 / (反斜线)。

第二种写法用了$request_uri 省去了减去开头第一个反斜线的过程,正则匹配上性能更优。但仍不如第三种写法,因为 rewrite 有很多写法和规则,执行到最后 nginx 才知道这是一个 301 永久重定向。

第三种则直接 return 301 + $request_uri,直接告诉 nginx 这是个 301重定向,直接抓取指定URI。

Nginx下 return 和 rewrite在 301重定向上的区别 301更优雅

引用: https://blog.csdn.net/lijun_work/article/details/108257956

GouGe
程志辉 前行的路充满未知,不努力尝试,永远都不知道有多精彩。

发表评论

已有 4 条评论
  1. evve
    evve

    学到了~ 感谢分享

  2. 可以这样写:

    server { server_name _; listen 80 default_server; listen 443 ssl http2 default_server; ssl_reject_handshake on; return 444; }
  3. 我在想你会怎么弄,结果最后发现是直接301到自己站点了,这样也挺好的。

    我一般也是301到www的梦幻辰风。