upstream example {
server 172.0.0.1:3000;
server 172.0.0.2:3000;
}
server {
listen 3000;
server_name _;
location / {
proxy_pass http://example;
proxy_ssl_verify off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
对于上面这个配置,我理解的是,假如客户端请求的是 http://ip:3000/path?a=1&b=2
, nginx 会根据 example 这个 upstream 选择一个后端服务器转发请求,比如 http://172.0.0.1:3000/path?a=1&b=2
但是我在工作中有碰到过如下配置:
location ~ ^/api/(.*) {
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://172.0.0.3:31081/$1$is_args$args;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
在这个配置中,proxy_pass 指令后面有 $is_args 、$args 这些参数。如果不加参数,客户端请求 url 上的参数就无法转发到 172.0.0.3 服务器上
我想要的是要把客户端请求 url 中的参数转发到后端,我的疑惑是什么时候 proxy_pass 指令后面需要加 $is_args 、$args 这些参数
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.