如何在nginx中的proxy_pass中发送request_uri作为查询参数

时间:2017-07-15 07:23:18

标签: nginx

我有以下nginx配置

server {
listen 80;
client_max_body_size 10M;
keepalive_timeout    15;
server_name mysite.com;

location / {
    proxy_pass http://anothersite.com
}
}

以上是有效的,但我需要以下内容:

location / {        proxy_pass http://anothersite.com?q=request_uri所以我可以将request_uri作为查询参数传递。

请提供正确的语法,将request_uri作为查询参数传递。

感谢。

1 个答案:

答案 0 :(得分:0)

您只需使用正则表达式rewrite request_uri即可。

location / {
    rewrite ^/(.+)$ ?q=$1
    proxy_pass http://anothersite.com;
}

rewrite规则匹配以request_uri开头的任何/,并捕获之后出现的任何非空字符串(。+)。然后它会将request_uri重写为?q=,然后重写/之后的内容。由于您的proxy_pass指令并未以/结尾,因此会将重写的request_uri附加到代理目标。

因此,对http://yoursite.com/some/api的请求将被重写并代理传递给http://anothersite.com?q=some/api

希望这就是你想要的!