Require:
- Server1 (
OpenWebUI
/ frpc
)
- Server2 (
Public IP
/ Domain name
/ frps
)
1. Docker部署OpenWebUI (Server1)
参考 https://docs.openwebui.com/
2. frpc.toml (Server1)
frp
部署参考 https://github.com/fatedier/frp
1 2 3 4 5 6 7 8
| serverAddr = "xxx.xxx.xxx.xxx" # frps public ip serverPort = 7000
[[proxies]] name = "oi" type = "http" localPort = 8080 # 此处我的oi端口没有使用默认的3000,请自行调整 customDomains = ["domain name"]
|
3. frps.toml (Server2)
1 2 3
| [common] bind_port = 7000 vhost_http_port = 7001
|
4. Nginx 代理 (Server2)
只使用普通的 Http
代理将无法支持OpenWebUI正常功能
如 https://github.com/open-webui/open-webui/issues/9635
因此需要支持 Websockets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server { listen 80; server_name domain name;
location / { proxy_pass http://localhost:7001; # 转发到 FRPS 的 HTTP 端口 proxy_redirect off; 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; }
# WebSocket support location /ws/ { proxy_pass http://localhost:7001/ws/; # 根据实际 WebSocket 服务路径调整 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; 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; } }
|
最后即可使用 http://domain name
访问内网 OpenWebUI.