环境如下: nginx 在内网,但是内网有一个代理,可以通过代理访问外网。系统上使用
http_proxy=http://10.10.2.10:8080/
https_proxy=http://10.10.2.10:8080/
没问题。但是 nginx 却不能使用这个配置访问外网。 想通过 nginx 代理外网的服务进入内网,供内网机器使用,想问下需要如何配置。
试过这个配置好像不行的样子
location /cip/ {
proxy_set_header Host www.cip.cc;
proxy_pass http://10.10.2.10:8080/; # 通过代理连接
}
1
Jacksu 2023-05-25 10:11:34 +08:00
试试:
proxy_pass http://www.cip.cc |
2
JackHuang90 OP @Jacksu 不行,nginx 不使用系统的代理设置
|
3
JackHuang90 OP @Jacksu 还会提示没有 dns ,因为内网是没有 dns
|
4
lt0136 2023-05-25 10:34:30 +08:00
|
5
rekulas 2023-05-25 10:48:17 +08:00
纯 nginx 不清楚怎么设置,简单的 proxy_pass 应该不行,发送的 header 不完整代理不知道你要访问什么,得中间加一层封装下请求才行
如果是我会考虑 go 实现一个简单的代理然后设置上级代理就行了 |
6
ysc3839 2023-05-25 10:52:33 +08:00 via Android
要把请求的 PATH 改成完整 URL ,比如原本 HTTP 请求头是 GET /test HTTP/1.1 ,实际去请求 http proxy 的话应该是 GET http://example.com/test HTTP/1.1
另外 https 是没法支持的,所以更建议用 netcat 之类的端口转发到代理的功能 |
7
yinmin 2023-05-25 10:57:04 +08:00 via iPhone 1
先用 socat 将外部网站通过代理引到 127.0.0.1:10000 ,然后 nginx proxy_pass http://127.0.0.1:10000
|
8
JackHuang90 OP @lt0136 @yinmin 这个可行,代码如下
``` socat TCP4-LISTEN:28080,reuseaddr,fork PROXY:10.10.2.10:www.cip.cc:80,proxyport=8080 ``` nginx ``` location ^~ /cip/ { proxy_set_header Host www.cip.cc; proxy_pass http://localhost:28080/; # 通过代理连接 } ``` |