我有一个 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
匹配虚拟主机。应始终使用单独的虚拟主机。