我有一个location
块作为
location @test{
proxy_pass http://localhost:5000/1;
}
但是nginx抱怨"proxy_pass cannot have URI part in location given by regular expression..."
有人知道可能出了什么问题吗?
我正在尝试在上传完成时查询localhost:5000/1:
location /upload_attachment {
upload_pass @test;
upload_store /tmp;
...
}
4条答案
按热度按时间7hiiyaii1#
从技术上讲,只添加URI应该可以工作,因为这里有文档说明,它说它应该可以工作,所以
应该可以正常工作,但既然你说不行,我建议反过来,诀窍是不是将
/my/uri
传递给localhost:5000/1
,而是将/1/my/uri
传递给localhost:5000
,这就是我重写的剧本
意思是重写整个URL,在前面加上
/1
,然后加上剩下的,整个块变成注意:@Fleshgrinder提供了一个答案,解释了为什么第一种方法不起作用。
z8dt9xmd2#
这里到底发生了什么?
nginx无法处理
proxy_pass
指令中您想要的URI部分,因为您位于一个指定的位置(因此出现错误消息)。这是因为nginx是以模块化方式构建的,并且每个配置块在不同的阶段由不同的模块读取。所以请记住,在以下情况下,您不能在proxy_pass
指令中包含URI:1.正则表达式位置
1.指定位置
if
数据块我们如何解决这个问题?
Mohammad AbuShady explained如何重写并将请求的URI传递到代理服务器。我只是想澄清原因。
siv3szwd3#
尝试省略“/”(URI部分)并检查。
vu8f3i0k4#
以上这些都帮不了我。
我的解决方法是:
请注意,
resolver
指令可能因上下文而异。