gpt4 book ai didi

nginx - 将请求转发到另一个代理

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

所以,我有一个第三方代理(可能在鱿鱼下),它只接受来自我的一个 IP 的连接,但我需要能够从各种 IP 访问它。

所以我试图放置一个 nginx 来将请求转发到这个代理。我知道 nginx 可以转发这样的请求:

location / {
proxy_pass http://$http_host$uri$is_args$args;
}

如果我需要 nginx 将请求直接转发到目标站点,这将起作用,但我需要它首先将其传递给代理 X。我试过这个:
upstream myproxy {
server X.X.X.X:8080;
}

location / {
proxy_pass http://myproxy$uri$is_args$args; // also tried: http://myproxy$http_host$uri$is_args$args
}

但是我得到“(104)对等方重置连接”。我猜是因为 nginx 是这样代理的:
GET /index.html HTTP/1.1
Host: www.targetdomain.com.br

但我需要它来代理这样的:
GET http://www.targetdomain.com.br/index.html HTTP/1.1

最佳答案

我发现这有效:

http {
# resolver 8.8.8.8; # Needed if you use a hostname for the proxy
server_name ~(?<subdomain>.+)\.domain\.com$;

server {
listen 80;

location / {
proxy_redirect off;
proxy_set_header Host $subdomain;
proxy_set_header X-Forwarded-Host $http_host;
proxy_pass "http://X.X.X.X:8080$request_uri";
}
}
}

您需要使用 resolver如果 X.X.X.X是主机名而不是 IP。

查询 https://github.com/kawanet/nginx-forward-proxy/blob/master/etc/nginx.conf更多技巧。

编辑 : 也检查 nginx server_name wildcard or catch-allhttp://nginx.org/en/docs/http/ngx_http_core_module.html#var_server_name

关于nginx - 将请求转发到另一个代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41493170/

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