Nginx 位置不匹配
Nginx location doesn't match
我有一个 url 这样的:
https://www.vagrant.something.com/cdn/util/thumb/100/100/dev-profile-images/444ba5eacba004cb31dabbb5d5cda3ce9b2c84f4.jpg
我有一个 nginx 配置,位置如下:
location /cdn/ {
proxy_pass http://cdn-vagrant.something.com/;
}
我的问题是它应该执行 proxy_pass 来取回图像,但是位置与 URL 不匹配,这是什么问题?如果我使用这个:
location / {
proxy_pass http://cdn-vagrant.something.com/;
}
并打开 link 它工作正常,但在这种情况下它 proxy_pass 所有请求。
删除结尾的斜线:
location /cdn/ {
proxy_pass http://cdn-vagrant.something.com;
}
这样请求 uri 将按原样传递到后端。
当 proxy_pass
包含路径(即使是单个 /
)时,该路径将替换代理请求中的位置路径(在您的情况下为 /cdn/
)。
更新:
您的后端 (cdn-vagrant.something.com) 配置为 return 永久重定向 /cdn/ -> /
。这意味着您的 proxy_pass
指令是正确的,您应该将 /cdn/
请求传递给后端的 /
。 应该有效:
location /cdn/ {
proxy_pass http://cdn-vagrant.something.com/;
}
我唯一不确定的是您的 www.vagrant.something.com 配置中的那些 if
块。尝试在没有它们的情况下进行测试,因为 if
is evil. And you should avoid blocks like if (-f $request_filename)
and if (!-e $request_filename)
, maybe use try_files
相反。
我有一个 url 这样的:
https://www.vagrant.something.com/cdn/util/thumb/100/100/dev-profile-images/444ba5eacba004cb31dabbb5d5cda3ce9b2c84f4.jpg
我有一个 nginx 配置,位置如下:
location /cdn/ {
proxy_pass http://cdn-vagrant.something.com/;
}
我的问题是它应该执行 proxy_pass 来取回图像,但是位置与 URL 不匹配,这是什么问题?如果我使用这个:
location / {
proxy_pass http://cdn-vagrant.something.com/;
}
并打开 link 它工作正常,但在这种情况下它 proxy_pass 所有请求。
删除结尾的斜线:
location /cdn/ {
proxy_pass http://cdn-vagrant.something.com;
}
这样请求 uri 将按原样传递到后端。
当 proxy_pass
包含路径(即使是单个 /
)时,该路径将替换代理请求中的位置路径(在您的情况下为 /cdn/
)。
更新:
您的后端 (cdn-vagrant.something.com) 配置为 return 永久重定向 /cdn/ -> /
。这意味着您的 proxy_pass
指令是正确的,您应该将 /cdn/
请求传递给后端的 /
。 应该有效:
location /cdn/ {
proxy_pass http://cdn-vagrant.something.com/;
}
我唯一不确定的是您的 www.vagrant.something.com 配置中的那些 if
块。尝试在没有它们的情况下进行测试,因为 if
is evil. And you should avoid blocks like if (-f $request_filename)
and if (!-e $request_filename)
, maybe use try_files
相反。