仅使用nginx为特定域提供站点

时间:2014-07-23 10:14:02

标签: nginx

我有一个域名(例如:example.com),我为此设置了DNS记录:

*.example.com   A   IP_ADDRESS
example.com     A   IP_ADDRESS
www.example.com CNAME example.com

这意味着对此域(包括子域)的所有请求都将路由到我的服务器,地址为IP_ADDRESS。

在我的服务器上运行nginx http服务器,服务器设置如下:

server {
    server_name demo.example.com;

    // Location blocks here
}

我期望的行为是该网站只会在demo.example.com上显示,而转到anything.example.com或只是example.com会导致nginx出错。

但事实并非如此,我实际看到的是,虽然我将server_name专门设置为demo.example.com,但此域的每个子域上的所有请求都将路由到此站点。因此,访问anything.example.com将导致在访问demo.example.com时看到我只想显示的网站。

所以,我怀疑我在这里只是愚蠢而且我错误配置了一些东西,但有人可以告诉我如何得到我期望的东西吗?

2 个答案:

答案 0 :(得分:2)

您应该阅读how nginx process request

您需要定义catch-all服务器块,以便具有demo.example.com以外的Host头的请求最终在该服务器中。

server {
    listen 80 default_server;
    return 404;
    # or return 444;
}

答案 1 :(得分:0)

你应该添加第二个默认站点,其中servername是default。在那里你可以安装任何错误页面。