我在 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 块中?或者您是否还记得在此处将主机名也更改为正确的值?
如果不是,那就可以解释很多了:-)