我正在尝试捕获未被启用网站的配置文件捕获的所有流量,而不是抛出默认的404,而是抛出200而使用空白响应。
因此,举例来说,如果我的网站https://www.example.com位于x.x.x.x
,有人将https://www.bad.com映射到x.x.x.x
的我的网址,那么他们只需获得一个空白的200内容。
为了实现这一点,我有一个位于/var/www/index.html
的文件是一个空白文件,并在{nginxdir}/conf.d/200catchall.conf
中设置了以下规则,该规则是在标准{nginxdir} /nginx.conf中导入的文件:
# Serve blank page to any requests not intended for one of our servers
server {
listen 443;
server_name _;
location / {
root /var/www
}
}
这适用于为https://www.bad.com的请求呈现200个空白屏幕。但是,当请求https://www.bad.com/cgibin/nofile.php之类的内容时,它会尝试遍历目录,并最终向error.log抛出错误,最终导致404.
我还试图用root
指令替换try_files /var/www/index.html
指令,这似乎给出了相同的结果......
一直在拉我的头发一段时间 - 有什么建议吗?
答案 0 :(得分:4)
为避免发回任何内容,服务器负载最小,请返回204 No Content
响应。请参阅Wikipedia Entry。
server {
listen 80 default_server;
listen 443 ssl default_server;
return 204;
}
设置catch all服务器的另一种方法是described here。
答案 1 :(得分:1)
最简单的捕获 - 如下所示:
server {
listen 80 default_server;
listen 443 ssl default_server;
return 200;
}