Files
Message-Push-Nest/docs/guide/url-prefix.md
T
2026-01-15 20:05:00 +08:00

142 lines
3.3 KiB
Markdown
Raw 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.
# URL 前缀配置
Message Nest 支持配置 URL 前缀,允许您将应用部署在子路径下(例如 `/message-nest`),而不是根路径。
## 工作原理
配置 URL 前缀后:
1. 后端会在所有路由前添加指定的前缀
2. 前端页面加载时,后端会在 HTML 中自动注入前缀配置
3. 前端的所有 API 请求会自动使用该前缀
**无需手动配置前端**,前后端会自动同步!
## 使用场景
- 在同一域名下部署多个应用
- 通过反向代理(如 Nginx)将应用映射到子路径
- 在企业内网中统一管理多个服务
## 配置方式
### 方式一:配置文件
编辑 `conf/app.ini` 文件,在 `[server]` 部分添加:
```ini
[server]
RunMode = release
HttpPort = 8000
UrlPrefix = /message-nest
```
### 方式二:环境变量
设置环境变量:
```bash
export URL_PREFIX=/message-nest
```
或在 Docker 中:
```bash
docker run -e URL_PREFIX=/message-nest ...
```
## 配置说明
- **路径格式**:可以带或不带前导斜杠 `/`,系统会自动处理
- **示例值**
- `/message-nest`
- `/api/message-nest`
- `message-nest`(会自动转换为 `/message-nest`
- **默认值**:空字符串(部署在根路径)
## 访问方式
配置 URL 前缀后,访问地址会变为:
- **原地址**`http://your-domain.com/`
- **新地址**`http://your-domain.com/message-nest/`
所有 API 端点也会自动添加前缀:
- **原 API**`http://your-domain.com/api/v1/sendways/list`
- **新 API**`http://your-domain.com/message-nest/api/v1/sendways/list`
## Nginx 反向代理配置示例
如果使用 Nginx 反向代理,配置示例:
```nginx
location /message-nest/ {
proxy_pass http://localhost:8000/message-nest/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
## 注意事项
::: warning 注意
1. **修改配置后需要重启服务**才能生效
2. **前后端会自动同步**前缀配置,后端会在 HTML 中注入配置
3. **已有的 API 调用**会自动适配新的前缀
4. **静态资源**(CSS、JS、图片等)也会自动使用新的前缀
5. **开发模式**下,如果前端单独运行,需要确保后端 API 的前缀配置正确
:::
## 常见问题
### Q: 修改前缀后无法访问?
**A:** 请检查:
1. 是否已重启服务
2. 前缀格式是否正确
3. 如果使用反向代理,检查代理配置是否正确
### Q: 可以使用多级路径吗?
**A:** 可以,例如:`/api/message-nest``/services/messaging/nest`
### Q: URL 前缀会影响性能吗?
**A:** 不会,URL 前缀只是路径的一部分,不会影响应用性能。
## 示例
### 示例 1:部署在子路径
```ini
# conf/app.ini
[server]
UrlPrefix = /message-nest
```
访问地址:`http://your-domain.com/message-nest/`
### 示例 2:多级子路径
```ini
# conf/app.ini
[server]
UrlPrefix = /api/services/message-nest
```
访问地址:`http://your-domain.com/api/services/message-nest/`
### 示例 3Docker 环境变量
```bash
docker run -d \
-p 8000:8000 \
-e URL_PREFIX=/message-nest \
-e DB_TYPE=sqlite \
message-nest:latest
```
访问地址:`http://localhost:8000/message-nest/`