Openwebui 使用Nginx+frp反代

Openwebui 使用Nginx+frp反代

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.

Author

Breynald

Posted on

2025-03-11

Updated on

2025-05-28

Licensed under

Comments