如何阻止 Nginx 重定向到默认服务器?

如何阻止 Nginx 重定向到默认服务器?

我正在为运行 wordpress 的多个网站设置 Nginx 和 PHP 5.3。我刚刚添加了一个新网站,它被重定向到默认欢迎页面。我在日志中看不到任何“真实”错误。

这是我的缩写 nginx.conf:

http {
    access_log /var/log/nginx_access.log;
    index index.php index.html;

    server {
        listen          80 default_server;
        server_name     _;
        root            /opt/nginx/html;

        location / {
        }
    }

    server {
        listen          80;
        server_name     example.com *.example.com;                      
        rewrite ^       $scheme://www.example.com$request_uri? permanent;
    }

    server {
        listen       80;
        server_name  www.example.com;
        root /home/example/example.com;

        location / {
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   unix:/var/run/php5-fpm/example.sock;
            fastcgi_index  index.php;
            include        fastcgi_params;
        }

}

答案1

正如评论所指出的,服务器块中的 listen 指令将其定义为默认值(来源:http://nginx.org/en/docs/http/request_processing.html):

listen       80  default_server;

以下声明是无效的服务器名称(来源:http://nginx.org/en/docs/http/server_names.html)(因此它永远不会与任何有效域相交):

Server_name _; 

为了解决您的问题,请确保您有一个带有 listen(端口)和 server_name(虚拟主机)的服务器块 - 当您在 nginx 中执行虚拟主机名匹配时,从“更精确到不太精确”时,这个将首先被触发:

Listen 80;
Server_name your-domain-name.com;  

相关内容