gpt4 book ai didi

Nginx:删除单个查询字符串参数

转载 作者:行者123 更新时间:2023-12-03 21:12:16 26 4
gpt4 key购买 nike

我有一个服务器,它返回一个包含 API key 的 301 HTTP 重定向 URL。重定向命中 Nginx,在那里我需要添加一个 Authorization包含 API key 值的 HTTP header 。然后我想从发送的查询参数中删除 API key
我需要翻译/google/?search=abcde&apikey=1234&version=1/google/?search=abcde&version=1 代码

location /google/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Authorization "Bearer $arg_apikey";
proxy_pass https://google.com/;
}
我尝试了以下方法,但不起作用:
Remove parameters within nginx rewrite
location /google/ {
if ($query_string ~ "^(.*)apikey=(.*)$") {
rewrite ^(.*)$ $uri? permanent;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Authorization "Bearer $arg_apikey";
proxy_pass https://google.com/;
}
任何帮助将不胜感激!

最佳答案

一种解决方案是将正则表达式应用于 $request_uri变量(包含原始请求,包括查询字符串)并捕获要删除的参数之前和之后的所有内容。
例如:

map $request_uri $newuri {
default $request_uri;
~^(?<prefix>.*)apikey=[^&]+(?<suffix>.*)$ $prefix$suffix;
}
server {
...
location /google/ {
resolver ...;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Authorization "Bearer $arg_apikey";
proxy_pass https://google.com$newuri;
}
...
}
您可能可以使用 if 获得类似的结果。堵塞。在本例中, proxy_pass语句是使用 map 构造的多变的。见 this document详情。
您可能需要定义一个 resolver因为 proxy_pass 中的变量陈述。见 this document详情。

关于Nginx:删除单个查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63054331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com