gpt4 book ai didi

nginx - 将 NGINX 代理中的请求正文替换为 POST

转载 作者:行者123 更新时间:2023-12-01 14:55:12 25 4
gpt4 key购买 nike

我正在尝试使用 NGINX 来代理一个需要在中间做一些魔术的请求。本质上,我有一个只能发送未经身份验证的 GET 请求的客户端,我需要接收此请求,发出一个 POST 以使用存储在 NGINX 配置中的静态凭据登录到服务器,并将响应正文替换为 html 重定向。这将适用于我的场景,因为 POST 响应将包含一个 Set-Cookie header ,其中包含一个表示经过身份验证的 session 的 session ID。我知道我可以使用 proxy_method强制 NGINX 通过 POST 进行出站调用,我可以使用 sub_filter用 html 重定向替换 POST 响应。我的问题是如何设置将在 POST 请求中发送的请求正文?

有任何想法吗?

伊恩

最佳答案

Ubuntu 16.04 和 Ubuntu 18.04 的工作示例

enter image description here

安装

# sudo apt purge nginx-*  # maybe necessary, backup your /etc/nginx/… configs before!
sudo add-apt-repository ppa:nginx/stable
sudo apt-cache show nginx-extras | grep -E '(xenial|bionic)'
sudo apt install nginx-extras # Lua support (nginx-extras is > nginx-full)

配置
/etc/nginx/sites-available/test.conf
server
{
listen 80;
server_name test.example.com;

location /
{
if ($request_method = POST)
{
access_by_lua_block
{
ngx.req.read_body()
local req = ngx.req.get_body_data()
local newreq, n, err = ngx.re.gsub(req, "REPLACE", "REPLACED")
ngx.req.set_body_data(newreq)
}
}

include proxy_params;
proxy_pass http://target.local:80/;
}
}

启用
cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/test.conf test.conf
sudo nginx -t
sudo service nginx reload # or newer: sudo systemctl reload nginx

如果没有 sites-availablesites-enabled文件夹,只需输入 test.conf在您的 conf.d文件夹。

关于nginx - 将 NGINX 代理中的请求正文替换为 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614199/

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