Nginx 转发主机名

Nginx 转发主机名

我有一个 NGINX 作为带有 PHP-fpm 的反向代理。Nginx 设置为服务 www.somehost.com。我添加了另一个主机 www.anotherhost.com。现在我需要以这种方式设置重定向:如果用户输入 www.anotherhost.com,则它会重定向到 www.somehost.com/someurl,但浏览器栏中的 url 不应更改。如果我设置重写,它会起作用,但它也会重写浏览器中的 url。可以用这种方式重定向吗?

if ($host = "www.anotherhost.com") {
   rewrite ^ http://www.somehost.com/someurl;
}

答案1

您需要在您的配置中设置另一个虚拟主机www.anotherhost.com,在其中设置root指令以便它成为所在的子目录www.somehost.com/someurl

例如:

server {
    server_name www.somehost.com;
    root /var/www/www.somehost.com;

    ... FastCGI config ...
}

server {
    server_name www.anotherhost.com;
    root /var/www/www.somehost.com/someurl;

    ... FastCGI config ...
}

您还需要包含其他server块指令,例如listen

在 nginx 中,不应使用if匹配虚拟主机。应始终使用单独的虚拟主机。

相关内容