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

San*_*dyD 44 nginx

如果我已经有一堆虚拟主机,我如何创建一个虚拟主机来处理与任何虚拟主机都不匹配的请求?(即通过 IP 访问,另一个域链接到 IP,.etc .etc)

小智 57

服务器名称 _; 和侦听配置上的 default_server 是您正在寻找的。

例子:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您使用 SSL,那么您需要一些额外的管道来处理 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
}
Run Code Online (Sandbox Code Playgroud)

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