Nginx 继续为不在配置中的域名提供服务

Nginx 继续为不在配置中的域名提供服务

我有一个域名 example.ovh 和另一个域名,比如 vps-example.ovh。

我已经配置了 nginx,只https://example.ovh已送达。

在我的示例中,两个域名仍然可用(vps-example.ovh 和 example.ovh),尽管 vps-example.ovh 不是配置的一部分

server {
        listen   80;
        # listen [::]:80 default_server deferred;
        # return         301 https://$server_name$request_uri;
        return 444;
}

server {
    listen 443 ssl http2;
    server_name test.ovh;
    include snippets/self-signed.conf;
    include snippets/ssl-params.conf;

    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

答案1

如果 Nginx 无法匹配,server_name它将使用默认服务器。如果您希望 Nginx 执行其他操作,则需要定义“catch all”服务器块。

您可以listen 443 ssl default_server;在第一个块中添加一条语句server,但它需要证书。您可能可以在外部块中包含 SSL 配置,以便两个块都可以继承它server

include snippets/self-signed.conf;
include snippets/ssl-params.conf;

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    return 444;
}
server {
    listen 443 ssl http2;
    server_name example.com;
    ...

证书可能无效,浏览器可能会生成警告。但使用server_name指令中未列出的任何名称将无法再访问主站点。

相关内容