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;
        }
    }
}
posted @ 2025-09-02 14:01  一只桔子2233  阅读(19)  评论(0)    收藏  举报