本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

苏南大叔来聊一个非常实用的nginx配置。目前,一般的网站都是买个虚机的服务器,然后一个服务器上面放置多个站点。那么,这种情况下,如果忘了配置某个站点的根目录,对应的域名流量就会白白的浪费了。对于,有很多个域名,但是真实站点确没有几个的人来说,这种情况非常常见。

苏南大叔:nginx如何配置域名未匹配站点,以捕获所有流量? - nginx-default-site
nginx如何配置域名未匹配站点,以捕获所有流量?(图3-1)

本文测试环境:宝塔面板@7.5.2nginx@1.18.0。本文虽然是基于宝塔面板的,但是适用于所有的nginx容器的情况。

背景提示

苏南大叔在这里以宝塔面板为例,说明如何截获这种自然流量。首先前提是:大家都是设置了vhost的,在vhost目录下面的所有配置文件都是可以生效的。一个配置文件放进去,nginx做个reload操作,就可以生效了。

上述背景知识,如果不晓得话,可以参考苏南大叔的下面的文章链接:

苏南大叔:nginx如何配置域名未匹配站点,以捕获所有流量? - default-site-conf
nginx如何配置域名未匹配站点,以捕获所有流量?(图3-2)

匹配所有未匹配站点

vhost目录下面,(宝塔的路径是:/www/server/panel/vhost/nginx),放置一个0.default.conf文件,名字其实不重要。但是,有个排序的意义在里面。(这里,大家可以联想一下,是不是有些人的微信名都是要强加个a字符?这里是一样的道理。)

配置的内容是:

server
{
    listen 80;
    server_name _;
    index index.html;
    root /www/server/nginx/html;
    error_page 404 /404.html;
    # error_page 404 = http://www.baidu.com/error.html;
}

这个配置的内容,是苏南大叔修改过的。里面制定了server_name _,这里其实制定为啥乱七八糟的字符串都可以。只要是不匹配,就会走到这里进行处理。当然,使用_来表达的话,即优雅又实用。

这里,先制定了这种情况下的html根目录,同时还制定了最常见的404页面的处理方案。而宝塔默认的html里面,并没有404.html这个文件,所以,您还是可以自己创建一个比较好。或者直接跳转到某个链接地址也是可以的。

效果

上述配置文件放置到vhost目录下之后,需要对nginx重新加载配置操作(或者重新启动nginx),就可以生效了。效果就是:任何指向该ip的域名,访问的时候,都会被匹配到该目录下面,并且对于404页面也做了控制。那么一个index.html和一个404.html,就可以写自己的流量控制逻辑了。对吧?

至于具体的流量控制逻辑,就您自己设置吧?下面的截图,是宝塔面板捕获到这种没有绑定站点时的流量时,所显示的界面,你需要做的就是修改这个界面。

苏南大叔:nginx如何配置域名未匹配站点,以捕获所有流量? - nginx-all-ip-fail
nginx如何配置域名未匹配站点,以捕获所有流量?(图3-3)

相关链接

总结

没有被nginx匹配到的域名,该如何处理呢?例如:阿里云说,您的服务器上面有非法的域名(其实是别的域名指向了你的ip),或者很多你的域名指向了一个服务器,但是又懒得配置太多域名。这些类似的问题,都可以在本文中找到答案。

更多nginx的配置小技巧,可以参考苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。