143 lines
3.0 KiB
Markdown
143 lines
3.0 KiB
Markdown
|
|
# 反向代理配置指南
|
|||
|
|
|
|||
|
|
本指南用于配置 OpenResty 和 frpc 以将 API 暴露到公网,便于调试飞书登录。
|
|||
|
|
|
|||
|
|
## 环境要求
|
|||
|
|
|
|||
|
|
- 已安装 OpenResty 或 Nginx
|
|||
|
|
- 已安装 frpc
|
|||
|
|
- 拥有可用的 frp 服务器
|
|||
|
|
- 拥有可配置的域名
|
|||
|
|
|
|||
|
|
## 安装步骤
|
|||
|
|
|
|||
|
|
### 1. 安装 OpenResty (Ubuntu/Debian)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 导入 GPG 密钥
|
|||
|
|
wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
|
|||
|
|
|
|||
|
|
# 添加 OpenResty 仓库
|
|||
|
|
sudo apt-get -y install -y wget gnupg ca-certificates
|
|||
|
|
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
|
|||
|
|
echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openresty.list
|
|||
|
|
|
|||
|
|
# 安装 OpenResty
|
|||
|
|
sudo apt-get update
|
|||
|
|
sudo apt-get install -y openresty
|
|||
|
|
|
|||
|
|
# 启动服务
|
|||
|
|
sudo systemctl start openresty
|
|||
|
|
sudo systemctl enable openresty
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 配置 OpenResty
|
|||
|
|
|
|||
|
|
将 `nginx/x-server-api.conf` 复制到 OpenResty 配置目录:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo cp nginx/x-server-api.conf /usr/local/openresty/nginx/conf/conf.d/
|
|||
|
|
sudo mkdir -p /usr/local/openresty/nginx/logs
|
|||
|
|
sudo openresty -s reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 安装 frpc
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 下载 frpc(根据你的系统选择版本)
|
|||
|
|
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
|
|||
|
|
|
|||
|
|
# 解压
|
|||
|
|
tar xzf frp_0.52.3_linux_amd64.tar.gz
|
|||
|
|
cd frp_0.52.3_linux_amd64
|
|||
|
|
|
|||
|
|
# 复制到系统路径
|
|||
|
|
sudo cp frpc /usr/local/bin/
|
|||
|
|
sudo chmod +x /usr/local/bin/frpc
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 配置 frpc
|
|||
|
|
|
|||
|
|
编辑 `frpc/frpc.ini`,填入你的 frp 服务器信息:
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
[common]
|
|||
|
|
server_addr = your-frp-server.com # 你的 frp 服务器地址
|
|||
|
|
server_port = 7000 # frp 服务器端口
|
|||
|
|
token = your-frp-token # 认证令牌
|
|||
|
|
|
|||
|
|
[x-server-api]
|
|||
|
|
type = http
|
|||
|
|
local_ip = 127.0.0.1
|
|||
|
|
local_port = 8787
|
|||
|
|
custom_domains = api.x-server.your-domain.com # 你的公网域名
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 启动 frpc
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 前台运行(测试)
|
|||
|
|
frpc -c frpc/frpc.ini
|
|||
|
|
|
|||
|
|
# 后台运行(生产)
|
|||
|
|
nohup frpc -c frpc/frpc.ini > /dev/null 2>&1 &
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 配置 DNS
|
|||
|
|
|
|||
|
|
将你的域名 `api.x-server.your-domain.com` 的 A 记录指向你的 frp 服务器 IP。
|
|||
|
|
|
|||
|
|
### 7. 配置飞书应用
|
|||
|
|
|
|||
|
|
在飞书开放平台配置回调 URL:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
https://api.x-server.your-domain.com/api/v1/auth/feishu-login
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 验证配置
|
|||
|
|
|
|||
|
|
### 测试本地 API
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:8787/api/v1/user/info
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测试反向代理
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl http://api.x-server.local/api/v1/user/info
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测试公网访问
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl https://api.x-server.your-domain.com/api/v1/user/info
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### frpc 连接失败
|
|||
|
|
|
|||
|
|
1. 检查 frp 服务器是否在线
|
|||
|
|
2. 检查 token 是否正确
|
|||
|
|
3. 检查端口是否被防火墙阻止
|
|||
|
|
|
|||
|
|
### 域名无法访问
|
|||
|
|
|
|||
|
|
1. 检查 DNS 解析是否生效
|
|||
|
|
2. 检查 frp 服务器是否配置了该域名
|
|||
|
|
3. 检查 frpc 日志
|
|||
|
|
|
|||
|
|
### CORS 错误
|
|||
|
|
|
|||
|
|
如果前端调用 API 时出现 CORS 错误,检查 nginx 配置中的 CORS 头部设置。
|
|||
|
|
|
|||
|
|
## 安全建议
|
|||
|
|
|
|||
|
|
1. **生产环境务必使用 HTTPS**
|
|||
|
|
2. 配置 IP 白名单限制访问
|
|||
|
|
3. 使用强密码和 token
|
|||
|
|
4. 定期更新 frp 和 OpenResty 版本
|
|||
|
|
5. 配置防火墙规则
|