Nginx 根据请求参数 代理到不同的服务
1、参考
杀死nginx进程
> taskkill /IM nginx.exe /F
2、重点
主要是根据_w_third_env的值映射并设置$backend_url的值
注意:$arg__w_third_env这里有两个下划线
map $arg__w_third_env $backend_url {
dev 'http://127.0.0.1:15001';
pre 'http://127.0.0.1:15001';
prod 'http://127.0.0.1:15001';
default 'http://127.0.0.1:15001';
}
#这个是重点转发
proxy_pass $backend_url;
其它知识点
日志格式 log_format_03
add_header,是响应返回请求头
proxy_set_header,是转发给服务的请求头
3、配置
#user nobody;
worker_processes 1;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format log_format_03 '"XXXXX"$remote_addr [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" [env:pre] [proxy_to:aaa-pod:8080]';
map $arg__w_third_env $backend_url {
dev 'http://127.0.0.1:15001';
pre 'http://127.0.0.1:15001';
prod 'http://127.0.0.1:15001';
default 'http://127.0.0.1:15001';
}
server {
listen 8085;
server_name localhost;
#access_log logs/8083.access.log main;
location ~ ^/api/v1/3rd/(.*)$ {
if ($arg__w_third_env = "dev") {
access_log logs/8083.access.log log_format_03;
set $env_value 'dev666';
}
add_header X-Forward-Env $env_value always;
proxy_set_header X-Forward-Env $env_value;
add_header Content-Type application/json;
#return 200 '{"message": "Custom response for /api/v1/3rd/"}';
proxy_pass $backend_url;
# 这个重写是测试用的
rewrite ^/api/v1/3rd/(.*)$ /admin-api/demo/10/get01 break;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

浙公网安备 33010602011771号