Nginx 如何将 request path 作为参数传递给后端?

2014-11-12 15:40:29 +08:00
 andybest
例如客户端浏览器访问 http://my.com/abc/d.html 或者其他任何基于 my.com 下的路径,
将该路径转至 http://127.0.0.1:81/process.php?path=/abc/d.html 进行处理

我使用 proxy_pass 方法如下,确不生效:

server {
...
location / {
proxy_pass http://127.0.0.1:81/process.php?path=$1;
}
}

这个 $1 变量在 rewrite 指令后可代表 request path ,而 proxy_pass 下却不行呢,求教!
2351 次点击
所在节点    问与答
6 条回复
holyghost
2014-11-12 18:11:07 +08:00
带uri的请求 需要用rewrite重写 然后再proxy_pass的
extreme
2014-11-12 18:22:48 +08:00
“$1”是正则表达式的东西,你都没用正则表达式,肯定无效。
其实有一个更好的方法:
proxy_pass http://127.0.0.1:81/process.php?path=$request_uri;
extreme
2014-11-12 18:25:05 +08:00
@extreme 忘了说,$request_uri是带请求参数的,如果要无参数的,就用$script_name
extreme
2014-11-12 18:27:39 +08:00
@extreme 记错了,不是$script_name ,$request_filename才对……
ryd994
2014-11-13 00:08:56 +08:00
@extreme $uri不就没参数么
extreme
2014-11-13 12:48:50 +08:00
@ryd994 这是针对一个问题的多种解决方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/145905

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX