我有以下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作为查询参数传递。
感谢。
答案 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
希望这就是你想要的!