NGINX:带有正则表达式和重写的 proxy_pass

Vag*_*gho 1 nginx

我的 NGINX 位置default.conf

   location /api-gateway/ {
       proxy_http_version 1.1;
       proxy_connect_timeout 75s;
       proxy_read_timeout 100s;
       client_max_body_size 100m;
       proxy_set_header Host test.domain.com;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Port $server_port;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_buffering off;
       proxy_buffers 16 8k;
       proxy_buffer_size 4k;
       proxy_max_temp_file_size 0;
       rewrite ^/api-gateway/(.*)$ $1 break;
       proxy_pass http://ingress-srv; # ingress-srv is an upstream
    }
Run Code Online (Sandbox Code Playgroud)

以下是发送到我的 NGINX 服务器的请求示例:http://demo.domain.com/api-gateway/service/v1/metrics

我需要执行以下操作

  • 从原始网址中删除/api-gateway/,然后,
  • 重写/发送请求到ingress-srv上游而不更改 URL(无重定向)
  • 将标题更改为demo.domain.comtest.domain.com相信我已经正确完成的标题

我无法让它工作..

jwg*_*jwg 5

代替

proxy_pass http://ingress-srv; # ingress-srv is an upstream
Run Code Online (Sandbox Code Playgroud)

尝试这样做(注意斜线):

proxy_pass http://ingress-srv/; # ingress-srv is an upstream
Run Code Online (Sandbox Code Playgroud)

您可以取出该rewrite指令。

正如 Oscar Wilde 所说“我整个上午都在处理 nginx.conf,并取出了一个逗号。下午我又把它放了回去。”