这两个NGINX重写规则之间有什么区别,它们实际上做了什么?

wfveoks0  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(96)

我有NGINX反向代理代码,我一直在试验(通过试验和错误),最终得到我想要的结果。

下面的重写规则做我想让它做的;但是,我不确定是否有更好的方法,因为我是在反复试验中偶然发现的。我也不希望有任何意外的结果。

rewrite ^/$ /web/index.html;

字符串
最初,我错误地认为下面的重写规则应该做上面的规则所做的事情。但是,它做的事情完全不同。我想知道与第一条重写规则相比,它实际上做了什么。

rewrite ^/$ http://$http_host/web/index.html;

whhtz7ly

whhtz7ly1#

您总是可以在文档中找到最好的解释:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite
最重要的:
如果替换字符串以“http://”、“https://”或“$scheme”开始,则处理停止并且重定向被返回到客户端。
所以它基本上是把那个url发送给客户端,客户端再向新的链接发送一个新的请求。您还可以在浏览器链接栏中看到新链接。
如果重定向不以这些关键字开头,它将由nginx内部处理。所以它只是在内部调整所请求的uri来决定它应该返回给客户端的内容。您还可以在浏览器链接栏中看到您仍在请求的链接上。
下面是一个简单的例子:

location /test {
  rewrite ^/test$ http://localhost/web/index.html;   # client gets redirected
}

location /tester {
  rewrite ^/tester$ /web/index.html;   # serves the index.html on that link
}

字符串

相关问题