我安装了一个 nginx,它为几个虚拟主机提供服务;它们运行良好。但是,我似乎记得这台服务器还负责托管其他几个网站。我不记得是哪些了。
我不希望这些请求解析为默认(任意)虚拟主机。
例如,目前,转到http://10.0.0.10/
(内部地址)会解析为默认虚拟主机。此虚拟主机正在运行 drupal,并且——由于 drupal 无法识别虚拟主机——它会显示 drupal 安装说明。我担心这种情况也会发生在解析到此服务器的其他外部名称上。
有没有办法设置 nginx,以便它记录并删除与配置的 vhost 不完全匹配的请求?
或者,我想,这个问题可以表述为:“如何设置与所有未知名称匹配的默认虚拟主机?如何配置该虚拟主机以记录和删除访问?”
答案1
设置默认的捕获所有服务器并将请求记录到特定文件并返回某些状态或其他状态。可以使用已知的 server_name 值配置其他已知服务器。
log_format with_host '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$host"';
server {
listen 80 default_server;
location / {
access_log /var/log/nginx/unknown_site.log with_host;
return 404;
}
}
server {
listen 80;
server_name drupal.com;
location / {
....
}
}