0

我想使用重写指令将我网站的每个 IP 地址重定向到该网站的主机名,而不是像这样在 NGINX 中使用proxy_pass指令访问该网站

 proxy_pass http://host/name ;

使用 NGINX 作为代理可以,但我无法更改我的脚本来重写地址并同时代理我的请求。我尝试使用 Rewrite 指令,但我找不到正确的语法。

4

1 回答 1

0

使用 rewrite 指令更改主机将导致重定向。这意味着客户端需要向新主机发布另一个请求,然后,您可以 proxy_pass 这个请求。在这种情况下,客户端(例如浏览器)中的 URL 会发生变化,例如 ' http://*.*.*.*:port/uri?request_string' -> ' http://host/uri?request_string'。

通常,我们使用 rewrite 指令来更改将被 proxy_passed 的请求的 URI。如果要更改主机,请使用proxy_set_header. 一个例子:

location ~* "^/maishenme/(knowse|knowdetail|iget|ilist|initem|i?compare)(.*)?$" {
        rewrite "^/maishenme/(.*)?$" /$1 break;
        proxy_pass http://***.xxx.com;
        proxy_set_header Host "internal.xxx.com";
        break;
}

在这种情况下,从客户端来看,url 没有变化,但是对于后端服务器,您可以打印主机字段并看到它已更改为“internal.xxx.com”

于 2013-07-29T09:32:19.030 回答