nginx反向代理重写自定义头(非URL)

ni65a41a  于 2022-12-03  发布在  Nginx
关注(0)|答案(2)|浏览(191)

我尝试使用nginx反向代理重写自定义头信息,如“Author”(不是URL的一部分)。头信息“Author:“应该从“test123”重写为“BASIC”等。

命令:

管理员1@nginx1:~ $curl -x 192.168.175.134:80 http://home1.MyWeb.eu:8081/home1/index.html?t=1 -H "Author: test123" -vk

Apache上的TCP转储:

--
GET /home1/index.html?t=1 HTTP/1.0
Host: home1.MyWeb.eu
Connection: close
User-Agent: curl/7.58.0
Accept: */*
Proxy-Connection: Keep-Alive
Author: test123

期望结果:

--
GET /home1/index.html?t=1 HTTP/1.0
Host: home1.MyWeb.eu
Connection: close
User-Agent: curl/7.58.0
Accept: */*
Proxy-Connection: Keep-Alive
Author: BASIC
fae0ux8s

fae0ux8s1#

您可以在配置中使用proxy_set_header,即:

proxy_set_header            Author        "BASIC";
yuvru6vn

yuvru6vn2#

我用设置变量做的。有点丑,但似乎可以工作。

location / {
            <...>

            set $rewritten_header $http_myheader;
            if ($http_myheader = "something") {
              set $rewritten_header somethingelse;
            }
            proxy_set_header Myheader $rewritten_header;
        }

只有当条件匹配时,上述操作才会重写您的标题。否则,请保留原始值。
我认为如果你有一个大的Map,使用map会更优雅。

相关问题