因为安全问题,不想让外面的人直接访问我们公司内部的代理服务器。
于是想创建一台服务器,安装 nginx ,并且这台 nginx 对外公布出去。
并且这里面有个需求,nginx 只能帮忙转发特定 url 给代理服务器。
自己 google 了很多资料,配置文件改了很多次,没搞定,特此来求助 V2EX 这里的技术大大们。
要求是,nginx 只转发*.openai.com 的 url 到内网代理服务器 10.114.26.34 8118 上,其他 url 请求不予通过。
这个配置文件该怎么写?谢谢大家了。
1
Hilong 2023-04-11 17:38:49 +08:00 1
问下 chatgpt 不就可以了,我帮你问了
可以使用 Nginx 的 location 指令来实现这个需求。具体的配置如下: server { listen 80; server_name example.com; location / { return 404; } location /proxy/ { proxy_pass http://10.114.26.34:8118; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location ~* \.openai\.com { proxy_pass http://10.114.26.34:8118; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 在上面的配置中,我们首先禁止了所有非 /proxy/ 和 *.openai.com 的请求,返回了 404 错误。然后,我们使用了两个 location 指令来分别处理 /proxy/ 和 *.openai.com 的请求。 对于 /proxy/ 的请求,我们直接将请求转发到内网代理服务器 10.114.26.34:8118 上,并设置了一些必要的代理头信息。 对于 *.openai.com 的请求,我们同样将请求转发到内网代理服务器 10.114.26.34:8118 上,并设置了一些必要的代理头信息。 需要注意的是,上面的配置只是一个示例,实际的配置可能需要根据具体的需求进行调整。另外,为了保证安全性,建议在配置完成后进行测试和审查,确保没有漏洞和安全隐患。 |
2
l4ever 2023-04-11 19:20:50 +08:00
到那个机器开个 nginx
``` worker_processes 1; events { worker_connections 1024; } http { server { listen 80; server_name _; gzip on; gzip_min_length 1k; gzip_types text/event-stream; auth_basic "Please input password"; auth_basic_user_file /etc/nginx/passwd; location ^~ /v1 { proxy_pass https://api.openai.com/v1; proxy_set_header Host api.openai.com; proxy_ssl_name api.openai.com; proxy_ssl_server_name on; proxy_set_header Authorization "Bearer sk-嘻嘻嘻"; proxy_pass_header Authorization; proxy_buffering off; } location / { root /usr/share/nginx/html; index index.html index.htm; } } } ``` 然后 http://YOUR_HOST/v1/ 就可以访问到 openai 了. |
3
mohumohu 2023-04-12 02:17:54 +08:00
你这个需求用 sniproxy 可能比较方便。或者直接开个 clash 写规则
|
4
defunct9 2023-04-12 05:58:35 +08:00 via iPhone
开 ssh ,让我上去试试
|
5
neighbads 2023-04-12 06:42:31 +08:00
server name 开一个 default 的。直接返回 403
server name 开一个 openai 的。代理 |
6
mrzx OP @defunct9 这个 nginx 不放在公网上,而是放在我们公司与另外一家公司的一条专线上,方便给别的公司的一台服务器调用我们公司内部的代理服务器。我们公司的代理服务器不能直接放开给其他公司,因为安全考虑,所以只能前面顶个 nginx.
|
7
abonan 2023-04-12 13:57:36 +08:00
代理服务器弄一个 nginx server ,然后对外服务器弄个端口转发或者反代
server { listen 80; server_name *.test.com; # 定义域名前缀 if ($host ~ "^(.*)\.test\.com$") { set $subdomain $1; } location / { # 配置后端服务器 proxy_pass https://$subdomain.openai.com; proxy_ssl_server_name on; proxy_redirect off; proxy_hide_header Cache-Control ; } } |
8
mrzx OP @mohumohu 目标访问过来,不希望加代理,而是通过修改他们公司内部的 DNS ,将 IP 解析成我们对外的这台 nginx 服务器。。可以理解成对方公司访问过来,误以为这台 nginx 就是 openai.com
|
9
mrzx OP 大概访问流方向就是
对方公司服务器----->对方公司 DNS 服务器修改解析记录将*.openai.com 对应的 IP 改成我们 Nginx 的服务器----->通过 ipsec vpn----->访问我们 Nginx------->我们 nginx 代为转发给内部代理服务器-------->公司内部代理服务器通过 fan qiang 专线访问真正的*.openai.com |