首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"location“和"proxy_pass”在nginx x-accel-redirect上的不同行为

"location“和"proxy_pass”在nginx x-accel-redirect上的不同行为
EN

Stack Overflow用户
提问于 2017-02-09 20:15:25
回答 1查看 737关注 0票数 2

我的nginx conf如下所示:

代码语言:javascript
复制
location ^~ /mount_points/mount_point1 {
  internal;
  alias /repos/mount_point_one;
}

location ^~ /to_proxy {
  internal;
  proxy_pass http://myproxy:5000;
}

当我请求'http://localhost/mount_points/mount_point1/myfile.zip‘时,我得到了预期的"/repos/mount_point_one/myfile.zip“。

当请求'http://localhost/to_proxy/myfile2.html‘时,我得到了"http://myproxy:5000/to_proxy/myfile2.html“。

在第一种情况下,"/mount_points/mount_point1“部分被删除了,而在第二种情况下,"/to_proxy”部分仍然存在,我必须在上游服务器中伪造一个"/to_proxy“地址来找出这一点。

我错过了什么吗?如果我只需要重写url,我如何删除上游服务器的"/to_proxy“部分问题?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-09 20:35:17

proxy_pass指令可以执行别名功能,但前提是提供了可选的URI。

代码语言:javascript
复制
location ^~ /to_proxy/ {
    internal;
    proxy_pass http://myproxy:5000/;
}

要使别名映射正常工作,还需要向location参数添加尾随的/

详情请参见this document

如果location参数的尾随/导致问题,您可以改用rewrite ... break

代码语言:javascript
复制
location ^~ /to_proxy {
    internal;
    rewrite ^/to_proxy(?:/(.*))?$ /$1 break;
    proxy_pass http://myproxy:5000;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42136484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档