所有 Nginx 虚拟主机重定向到一个 VHost

所有 Nginx 虚拟主机重定向到一个 VHost

我在 sites-enabled/domain.tld 文件中定义了大约 4 个不同的主机名。每个文件都采用以下格式:

#Redirect everything to the main site.
server {
        server_name *.abc.net;
        listen 80;

        root /var/www/vhosts/abc.net/httpdocs;

        if ($http_host != "acb.net") {
                rewrite ^ http://abc.net$request_uri permanent;
        }

        include /etc/nginx/conf.d/restrictions.conf;

        #Additional rules go here.

        # Only include one of the files below.
        include /etc/nginx/conf.d/wordpress.conf;

        # W3 Total Cache Rules
        include  /var/www/vhosts/abc.net/httpdocs/nginx.conf;
}

站点启用文件夹中的每个服务器块仅更改域名,因此 abc.net 变成 xyz.com 等等。

问题是,无论所有这些配置文件如何,所有 vhost 都只会重定向到一个 vhost。我尝试重新启动 nginx 服务器,重新加载它,还重新启动了服务器。

如果有帮助的话,这些请求会被发送到运行 PHP-FPM 的上游 php,并且所有域都在其上运行 wordpress。

感谢您的帮助。谢谢 :)

答案1

尝试更改每个虚拟主机中的 server_name 块

server {
  ...
  server_name   example.com  *.example.com;
  ...
}

或者按照 nginx 的建议

server {
    listen       80;
    server_name  *.example.com;
    return       301 http://example.com$request_uri;
}

server {
    listen       80;
    server_name  example.com;
    ...
    your config removing the if part
    ...
}

答案2

所以...

        if ($http_host != "acb.net") {
            rewrite ^ http://abc.net$request_uri permanent;
        }

是否包含在每个 vhost 块中?或者您是否还记得在此处将主机名也更改为正确的值?

如果不是,那就可以解释很多了:-)

相关内容