Files
sillytavern-repalice/PORT-CONFIG.md
2026-04-26 03:34:47 +08:00

275 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔌 端口配置说明
## 📊 当前端口映射
### Docker 生产环境
| 服务 | 容器内部端口 | 宿主机端口 | 访问地址 |
|------|------------|-----------|----------|
| **Backend** (NestJS) | 3000 | 3000 | http://localhost:3000 |
| **Frontend** (Nginx) | 80 | 23337 | http://localhost:23337 |
### 本地开发环境
| 服务 | 端口 | 访问地址 |
|------|------|----------|
| **Backend** (NestJS) | 3000 | http://localhost:3000 |
| **Frontend** (Vite) | 5173 | http://localhost:5173 |
---
## 🔧 如何修改端口
### 修改 Docker 端口
编辑 `docker-compose.yml`
```yaml
services:
backend:
ports:
- "3001:3000" # 宿主机:容器
frontend:
ports:
- "23338:80" # 宿主机:容器
```
然后重启:
```bash
docker-compose up -d
```
### 修改本地开发端口
**后端**:编辑 `server/.env` 或启动时指定
```bash
PORT=3001 npm run start:dev
```
**前端**:编辑 `client/vite.config.ts`
```typescript
export default defineConfig({
server: {
port: 5174,
},
})
```
---
## ⚠️ 注意事项
### 1. 端口冲突
如果端口被占用,会看到错误:
```
Error: port is already allocated
```
**解决方案**
- 查看占用端口的进程
```bash
# Windows
netstat -ano | findstr :23337
# Linux/Mac
lsof -i :23337
```
- 杀死进程或更换端口
### 2. 防火墙设置
确保防火墙允许访问这些端口:
**Windows**
1. 控制面板 → Windows Defender 防火墙
2. 高级设置 → 入站规则
3. 新建规则 → 允许端口 23337 和 3000
**Linux**
```bash
sudo ufw allow 23337/tcp
sudo ufw allow 3000/tcp
```
**Mac**
系统偏好设置 → 安全性与隐私 → 防火墙 → 选项
### 3. CORS 配置
如果修改了前端端口,需要更新后端的 CORS 配置:
编辑 `.env`
```env
FRONTEND_URL=http://localhost:23338 # 新的前端地址
```
或者在 `server/src/main.ts` 中修改:
```typescript
app.enableCors({
origin: process.env.FRONTEND_URL || 'http://localhost:23337',
credentials: true,
});
```
### 4. 前端 API 地址
如果修改了后端端口,需要更新前端的 API 地址:
**Docker 环境**:编辑 `docker-compose.yml`
```yaml
frontend:
environment:
- VITE_API_URL=http://localhost:3001/api # 新的后端地址
```
**本地开发**:编辑 `client/.env`
```env
VITE_API_URL=http://localhost:3001/api
```
---
## 🎯 推荐的端口方案
### 方案 A默认配置推荐
```yaml
backend: 3000 → 3000
frontend: 80 → 23337
```
**优点**
- ✅ 避免与常见端口冲突
- ✅ 易于记忆23337 = "爱生生生气" 😄)
- ✅ 远离常用端口80, 443, 3000, 5173, 8080
### 方案 B标准端口
```yaml
backend: 3000 → 3000
frontend: 80 → 80
```
**优点**
- ✅ 前端使用标准 HTTP 端口
- ❌ 可能与现有 Web 服务器冲突
### 方案 C开发友好
```yaml
backend: 3000 → 3000
frontend: 5173 → 5173
```
**优点**
- ✅ 与本地开发端口一致
- ❌ 可能与 Vite 开发服务器冲突
---
## 📝 端口选择建议
### 避免使用的端口
| 端口 | 用途 |
|------|------|
| 80 | HTTP 默认端口 |
| 443 | HTTPS 默认端口 |
| 3000 | Node.js 常用 |
| 5173 | Vite 默认 |
| 8080 | 代理/备用 HTTP |
| 8443 | 备用 HTTPS |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 27017 | MongoDB |
### 推荐的端口范围
- **20000-29999**:应用服务
- **30000-39999**:临时/测试服务
---
## 🔍 检查端口占用
### Windows
```powershell
# 查看所有监听端口
netstat -ano | findstr LISTENING
# 查看特定端口
netstat -ano | findstr :23337
# 查看进程信息
tasklist | findstr <PID>
```
### Linux/Mac
```bash
# 查看所有监听端口
sudo lsof -i -P -n | grep LISTEN
# 查看特定端口
sudo lsof -i :23337
# 或使用 netstat
sudo netstat -tulpn | grep :23337
```
---
## 🆘 常见问题
### Q1: 为什么前端用 23337 而不是 5173
**A**:
- 避免与本地 Vite 开发服务器冲突
- 您可以同时运行 Docker 和本地开发环境
- 23337 是一个不太可能被占用的端口
### Q2: 可以前后端都用同一个端口吗?
**A**:
不可以。它们是两个独立的服务,需要不同的端口。
但可以通过 Nginx 反向代理实现统一入口(需要额外配置)。
### Q3: 如何在局域网访问?
**A**:
1. 确保防火墙允许访问
2. 使用宿主机的 IP 地址:
```
http://192.168.1.100:23337 # 前端
http://192.168.1.100:3000 # 后端
```
3. 更新 CORS 配置允许局域网访问
### Q4: 端口修改后无法访问怎么办?
**A**:
1. 检查 Docker 容器是否正常运行:`docker-compose ps`
2. 查看日志:`docker-compose logs`
3. 确认端口映射正确:`docker port <container-name>`
4. 检查防火墙设置
5. 尝试重启:`docker-compose restart`
---
## 📞 需要帮助?
如果遇到端口相关问题:
1. 查看 [USER-GUIDE.md](USER-GUIDE.md)
2. 查看 [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
3. 提交 Issue
---
**祝您配置顺利!** 🎉