使用Nginx转发api.openai.com请求

背景
在中国大陆,由于网络限制的原因,访问一些国外网站需要使用梯子。但是如果想要构建自己的应用或网站,则需要搭建一个代理转发域名。在本文中,将介绍如何通过通过Nginx和Clash代理,构建openai.com 请求转发的过程。
部署安装
在Linux系统下安装配置Clash并 http 通过nginx 访问/openai 路径时,网络通过clash代理访问,请求实际是转发至https://api.openai.com。
安装Clash
首先需要在Linux系统下安装Clash,在终端中执行以下命令:
1. 打开终端(Terminal)。
2. 进入你要安装Clash的目录,例如:cd /usr/local/bin。
3. 下载Clash的最新版本,命令:wget https://github.com/Dreamacro/clash/releases/download/v1.15.1/clash-linux-amd64-v1.15.1.gz。
4. 解压Clash的压缩文件,命令:gunzip clash-linux-amd64-v1.15.1.gz。
5. 给Clash文件添加执行权限,命令:chmod +x clash-linux-amd64-v1.15.1。
6. 将Clash文件移动到/usr/local/bin目录下,命令:mv clash-linux-amd64-v1.15.1 /usr/local/bin/clash。
以上命令会下载Clash的安装包并解压,然后将其赋予可执行权限并启动。
配置Clash
在安装完成Clash后,需要进行配置才能正常使用。Clash的配置文件位于~/.config/clash/config.yaml,可以使用vim等编辑器编辑该文件,添加如下配置:
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: 0.0.0.0:9090
以上配置中,port指定了Clash的http代理端口,建议设置为7890;socks-port指定了Clash的socks代理端口,建议设置为7891;allow-lan开启允许局域网访问;mode选择了Clash的工作模式为Rule,表示通过规则进行代理;log-level指定了Clash的日志级别;external-controller指定了Clash的控制器地址和端口。
另外,需要在~/.config/clash/目录下创建一个名为config的文件,写入Clash的自定义配置,例如以下内容:
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: 0.0.0.0:9090
proxies:
- name: Proxy-A
type: socks5
server: example.com
port: 1080
cipher: chacha20-ietf
- name: Proxy-B
type: http
server: example.com
port: 8080
cipher: chacha20-ietf
rules:
- DOMAIN,www.google.com,Proxy-A
- DOMAIN-SUFFIX,google.com,Proxy-A
- MATCH,Proxy-B
以上配置中,proxies指定了Clash的代理列表,包含两个代理Proxy-A和Proxy-B;rules指定了代理规则,其中DOMAIN表示按照域名规则匹配,DOMAIN-SUFFIX表示按照域名后缀匹配,MATCH表示匹配所有流量,并由Proxy-B代理。
下载Country.mmdb放在~/.config/clash目录
wget https://github.com/Dreamacro/maxmind-geoip/releases/download/20230412/Country.mmdb
安装配置nginx
在Linux系统下安装nginx,并进行配置。可以使用apt-get等包管理器进行安装,然后在/etc/nginx/目录下创建一个名为clash.conf的文件,写入以下内容:
server {
listen 8080;
server_name _;
location /openai {
proxy_pass https://api.openai.com;
proxy_set_header Host api.openai.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以上配置中,指定了nginx监听8080端口,并将所有请求转发到Clash的代理端口。
启动Clash和nginx
在Linux系统中,启动Clash可以通过以下命令完成:
clash -d ~/.config/clash/
或
nohup clash -d ~/.config/clash/ > /dev/null 2>&1 &
在启动时,可以使用-d参数指定Clash的配置文件存放路径。以上命令中,Clash会在~/.config/clash/目录中搜索config.yaml文件。
在修改、保存以上配置后,可以使用以下命令启动nginx:
sudo systemctl start nginx
测试代理
在启动Clash和nginx后,可以通过浏览器或者其它应用程序测试代理是否正常工作。在浏览器中打开localhost:8080,进行测试访问。如果正常工作,Clash会将请求转发到代理服务器,从而实现vpn代理转发。
