设置Nginx来捕获所有未处理的虚拟主机

如果我已经有一堆虚拟主机,我怎么能创build一个虚拟主机来处理与任何虚拟主机不匹配的请求? (即通过IP访问,另一个连接到IP的域,etc。etc等)

服务器名称 _; 并在侦听configuration的default_server是你在找什么。

例:

server { listen 80 default_server; server_name _; root /var/www/default; (or wherever) } 

如果您使用SSL,那么您需要一些额外的configuration来pipe理default_server – 证书和密钥(可以自签名)。

 server { server_name _; listen 80 default_server; listen 443 ssl default_server; ssl_certificate <path to cert>; ssl_certificate_key <path to key>; return 404; # or whatever } 

Nginx将尝试在IP /端口匹配的default_server上接受SSL连接。 如果这样的服务器缺less证书/密钥,nginx会删除连接。 它不会尝试其他服务器。 所以不要忘记证书/密钥。

 server { listen 80 default_server; listen 443 ssl default_server; listen [::]:80 default_server; listen [::]:443 ssl default_server; server_name _; root /path/to/default; } 

这些条目分别用于端口80(HTTP),端口443(HTTPS),端口80 IPv6和端口443 IPv6。

你可以考虑添加log_not_found off; 避免为找不到的页面添加日志条目。