xuandao / blog

3 stars 0 forks source link

使用反向代理访问被墙的网站 #1

Open xuandao opened 1 year ago

xuandao commented 1 year ago

在国内,访问被封锁的海外网站成为一件十分麻烦的事情。这时,我们可以使用反向代理服务来绕过封锁,顺利访问墙外资源。在本文中,我们将介绍如何使用 oracle 韩国区的免费实例构建一个反向代理服务,并使用 api.openai.com 为例,让大家更好的理解反向代理的原理和具体操作步骤。

一、搭建反向代理服务器

创建 oracle 实例

参考信息: https://www.oracle.com/cn/cloud/free/

  1. 前提条件

首先需要一个 oracle 帐号,可以前往官网注册获取。登录后进入 oracle 控制台。

  1. 创建实例

点击左侧的“实例”菜单,进入实例管理界面,点击右上角的“创建实例”按钮。在实例创建界面中,选择“Oracle Cloud Free Tier”,创建一个免费实例;

  1. 配置实例

选定服务类型后,需要配置实例信息,如配置名称、管理密码、SSH公钥等信息,选择公网 IP 和块存储类型和大小,确认信息后,点击“创建”按钮。

创建完成后,在实例列表中,可以看到刚刚创建的实例,并且可以看到分配的 IP 地址。

搭建反向代理

NGINX 安装&配置

参考文档: https://docs.oracle.com/zh-tw/learn/oracle-linux-nginx/#before-you-begin

使用 SSH 工具连接到实例,如 Xshell、putty、secureCRT 等。

  1. 安装 NGINX
sudo dnf install -y nginx
  1. 配置 NGINX 配置 (/etc/nginx/conf.d/default.conf)
server {
 listen 80;
 server_name api.openai.com api.yourname.com;

 location / {
        proxy_pass http://api.openai.com;
 }
}
  1. 启动 Nginx
sudo systemctl enable --now nginx.service

防火墙配置

  1. 开启 oracle 实例的 80 端口
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
  1. 配置 linux 安全策略
setsebool -P httpd_can_network_connect 1

至此,整个反向代理服务配置完成。你可以通过 oracle 实例的公网 ip 直接进行访问。

二、通过反向代理访问

现在,我们已经成功安装好了反向代理服务,接下来,我们将以 api.openai.com 为例,说明如何通过反向代理访问国外网站。

通过 host 绑定访问

  1. 首先,修改 hosts 文件,将 api.openai.com 服务器的IP地址绑定到反向代理服务器的IP上

sudo nano /etc/hosts 在文件末尾添加以下代码 ( api.openai.com 的 IP 地址 ) api.openai.com

  1. 其次,在浏览器输入 api.openai.com 即可访问该网站。

域名绑定

  1. 若你有自己的域名,也可以将域名解析至反向代理服务器(注意 NGINX 配置中需加上你的域名,如 api.yourname.com),后可直接使用域名进行访问。
doveppp commented 1 year ago

api.openai.com需要https吧?

xuandao commented 1 year ago

api.openai.com需要https吧?

https 我用另一种方式解决了~可以通过函数计算做转发。https://github.com/xuandao/nodejs-reverse-proxy/blob/main/index.js