Nginx 子域服务器块不匹配

Nginx 子域服务器块不匹配

几年来,我主要使用 Nginx 作为反向代理。我创建了几个用于代理的子域服务器块,没有任何问题。突然需要从本地目录提供文件,而我似乎无法匹配 sub.www.example.com 来从该域提供文件。

这是我的默认配置文件的一部分,为了匿名而略作修改。在下面的代码片段中,当浏览器请求 www.example.com 时,www.example.com 域始终命中,而子域为 www.example.com。

有人能看出我做错了什么吗?你认为除了我在这里提供的内容之外,还有其他问题吗?如果您需要更多配置文件、日志或其他任何内容,请询问。

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

      server_name www.example.com;
      proxy_cache www;

    location / {

      include   /etc/nginx/common_configs/locproxy.conf;

      proxy_pass http://www3;
      proxy_redirect http://www3 http://$server_name;
     }

        include   /etc/nginx/common_configs/hiddenfiles_loc.conf;

    deny access to hidden files
    location ~ /\. { deny  all; }

        include /etc/nginx/common_configs/http_to_https_redirects.conf;
}

server {
           listen 80;
           listen [::]:80;
           server_name sub.www.example.com;
           access_log  /var/log/nginx/sub.access.log;
           error_log  /var/log/nginx/sub.error.log debug;
           include   /etc/nginx/common_configs/hiddenfiles_loc.conf;
           location / {
              root /var/www/example;
              #log_not_found off;
              autoindex            off;
              index                index.html;
              try_files            $uri $uri/ =404;
           }
}

#Redirect example.com to www.example.com
server {
        server_name example.com;
        location / {
        return 301 $scheme://www.example.com$request_uri;
        }
}

当我请求一个 URL 时http://sub.www.example.com,我反而收到了来自 www.example.com 的内容。www.example.com 的日志显示活动,而 sub.www.example.com 的日志则什么都没有显示。www.example.com 的日志还显示了对 sub.www.example.com 的请求。

上面的配置位于 /etc/nginx/sites-available/default 文件中。真正奇怪的是,配置末尾的重定向起作用了。

下面发布了一些 www.example.com 日志:

10.23.128.17 - - [14/Nov/2016:19:13:51 -0700] "GET /wp-includes/css/admin-bar.min.css?ver=4e05f26752784196aa8fb9e77ae9ff08 HTTP/1.1" 200 3865 "http://sub.www.example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"

10.23.128.17 - - [14/Nov/2016:19:13:51 -0700] "GET /wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.min.css?ver=2.7.2 HTTP/1.1" 200 6378 "http://sub.www.example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"

10.23.128.17 - - [14/Nov/2016:19:13:51 -0700] "GET /wp-content/plugins/buddypress/bp-core/css/admin-bar.min.css?ver=2.7.2 HTTP/1.1" 200 460 "http://sub.www.example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"

现在我想起来了,我还应该补充一点,我在端口 443 上有大约 20 个 SSL 子域,它们都运行良好。除了最后的重定向以将 example.com 转发到 www.example.com 之外,我认为这可能是我尝试添加到此服务器的第一个非 SSL 端口 80 子域。

有人发现这个配置有问题吗?或者你能想到我可以看看的其他地方吗?

答案1

这是由于 DNS 服务器条目将 www 的所有子域指向另一台服务器所致。另一台服务器导致某些功能正常,某些功能不正常。

感谢 Tim,我清理了所有配置,并排除了这些配置作为问题的根源。

相关内容