nginx catchall conf文件没有全部捕获

时间:2013-05-01 21:27:51

标签: configuration nginx server-configuration catch-all

我有一个通配符DNS条目,因此* .mydomain.tld被定向到我的服务器。 我正在使用nginx 我有两个标题为:

的配置文件
  • 默认
  • myconf.conf

我的conf文件如下所示:

默认:

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/website;
    index index.html index.htm;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
    }
}

myconf.conf:

server {
    listen 80; 
    #listen [::]:80 default_server ipv6only=on;

    root /home/me/www/website;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    # orig # server_name localhost;
    server_name me.mydomain.tld;

    access_log /home/me/logs/me.mydomain.tld.access.log;
    error_log /home/me/logs/me.mydomain.tld.error.log warn;

    location / { 
        try_files $uri $uri/ $uri.php?$args;
    }   
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

当我按如下方式浏览域时,这些是加载的conf文件。

  • me.mydomain.tld加载myconf.conf中定义的根目录
  • mydomain.tld加载默认
  • 中定义的根目录
  • anything.mydomain.tld加载myconf.conf中定义的根目录

什么是错误,默认不应该是它应该是什么? anything.mydomain.tld应该在默认的conf文件中加载根目录。

1 个答案:

答案 0 :(得分:4)

在默认配置文件中,您必须在default_server行中指定listen;另外,您需要删除server_name行:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/website;
    index index.html index.htm;

    #server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
    }
}

您用于server_name的下划线实际上并不是外卡(如果这是您的意图)。来自nginx Server Names文档:

  

这个名称没有什么特别之处,它只是无数域名之一,永远不会与任何真实姓名相交。也可以使用其他无效名称,如“ - ”和“!@#”。