23
2024
08
10:54:34

使用 Nginx 反代 OpenAI API 接口报 404 错误问题

一、场景

使用 A 服务器的 80 端口作为入口,来访问 B 服务器的 443 端口上的网站;其中,反代代码如下:

server {
        listen 80;
        server_name _;
        location / {
                proxy_pass https://api.openai.com;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        access_log /var/log/nginx/openai.log;
        error_log /var/log/nginx/openai.error.log;
}
Configure

二、问题

访问 A 服务器的 80 端口,任何链接都报 404 Not Found 错误;

三、分析

这个问题的原因是,A 服务器上的 Nginx 反代时,入口是 HTTP,端口为 80,默认传递到 B 服务器上 Host 以及 Port,就变成了 server_name 里的 HostPort 就变成了 80,即 B 服务器真正要去访问的应该是 https://api.openai.com,但是接收到的头部信息却是 Host: _:80,两边不一致,导致了这个错误。

四、方案

改善后,配置如下:

server {
        listen 80;
        server_name _;
        location / {
                proxy_pass https://api.openai.com;
                proxy_redirect off;
                proxy_set_header Host $proxy_host:$proxy_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #proxy_pass https://api.openai.com;
        }
        access_log /var/log/nginx/openai.log;
        error_log /var/log/nginx/openai.error.log;
}
Configure

这里的 $proxy_host 就是上面 proxy_pass 里的地址,$proxy_port 就是 proxy_pass 里的端口(https 默认是 443)。

改好后重启 Nginx 服务,问题解决。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/7744.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: