[Feature] Support switching OpenResty network mode (Host / 1panel-network) with runtime DNS resolution
メンテナーはふだん 1 日以内に返信
@wanghe-fit2cloud がすでに取り組んでいます。
2026年10月17日 から。
評価
この issue はまだ評価されていません。
説明
1Panel Version
2.3.2
Please describe your needs or suggestions for improvements
需求背景
目前 1Panel 的 OpenResty 默认使用 Host 网络模式。在实际使用中,希望将 OpenResty 接入 1panel-network,直接通过容器名反向代理其他应用商店的容器,好处是:
- 不需要端口映射,减少宿主机端口占用
- 容器名即地址,配置更直观
- 网络隔离更好,容器间通信不经过宿主机网络
相关讨论:#13434
但直接改成 bridge 网络后,会遇到一个问题:容器启动顺序不确定,后端容器未就绪时 OpenResty 启动失败。
Nginx 在配置加载阶段会解析 proxy_pass 中的域名,解析失败直接拒绝启动:
nginx: [emerg] host not found in upstream "容器名" in /www/sites/xxx/proxy/root.conf
单个后端的启动延迟,会导致整个 OpenResty 和所有站点不可用。
Please describe the solution you suggest
具体建议(三个功能点)
1. OpenResty 应用增加网络模式切换选项
在 OpenResty 的应用参数设置中,增加"网络模式"选项:
- Host 模式(默认,保持现状)
- 1panel-network(Bridge 模式)
用户可以根据需要切换,切换后自动重建容器。
2. 反向代理的 proxy_pass 改为变量形式 + location 内 resolver
当前生成的配置(root.conf):
location / {
proxy_pass http://容器名:端口;
...
}
建议改为:
location / {
resolver 127.0.0.11 valid=30s ipv6=off;
resolver_timeout 3s;
set $backend "容器名:端口";
proxy_pass http://$backend;
...
}
3. 切换网络模式时,自动更新现有站点的代理地址
- 从 Host → 1panel-network:将现有反向代理的地址从
127.0.0.1:端口自动替换为容器名:端口 - 从 1panel-network → Host:反向替换
这样用户切换网络模式后,现有站点不需要手动重新配置。
参考实现:Nginx Proxy Manager(Docker 环境下的同类产品)默认就是这种实现方式。
改动范围预估
- 网站 - 设置:增加网络模式选项(Host / 1panel-network)
- 网络切换逻辑:切换时重建容器并批量更新站点代理地址
- 反向代理配置生成:
applyLocationProxyPass函数中,bridge 模式下生成resolver+set $backend+proxy_pass $backend形式 - 相关源码:
agent/app/service/website_utils.go
价值
- 解决 bridge 模式下的启动失败问题——容器启动顺序不再影响 OpenResty
- 用户体验更好——可以直接用容器名代理,不用记端口号
- 向后兼容——默认 Host 模式保持现有行为,不影响存量用户
- 符合行业惯例——Nginx Proxy Manager 等同类产品早已采用此方案
Additional Information
关于"bridge 模式有局限性"的补充说明:
本建议不是要替换 host 模式,而是增加一个可选项。host 模式保持默认、保持现状,需要代理非容器服务的用户继续用 host 模式。
bridge 模式面向的是"所有应用都在 1panel-network 里、想用容器名直接代理"的场景——这类场景下 bridge 模式没有局限性,反而更干净。用户根据自己的场景选择。
- 主要言語
- Go
- スター
- 37.2k
- フォーク
- 3.4k
- 平均マージ
- 11時間 50分
- マージ済み PR(30日)
- 83
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
1Panel-dev/1Panel のほかの issue
-
[Feature] Add Folia Music Player to the App Store対応中かも @wanghe-fit2cloud が今日担当しました。 オープンtype: app-store
1Panel-dev/1Panel#14124 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] Python runtime supports using slim version images対応中かも @wanghe-fit2cloud が今日担当しました。 オープンtype: feature-request
1Panel-dev/1Panel#14123 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] AI GATEWAY Google url対応中かも @wanghe-fit2cloud が 1 日前に担当しました。 オープンtype: ai-gateway
1Panel-dev/1Panel#14122 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] AI GATEWAY Opencode対応中かも @wanghe-fit2cloud が 1 日前に担当しました。 オープンtype: ai-gateway type: question
1Panel-dev/1Panel#14121 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] Optimize Website List Buttons対応中かも @wanghe-fit2cloud が 2 日前に担当しました。 オープンtype: optimization
1Panel-dev/1Panel#14117 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
1Panel-dev/1Panel の issue をすべて見る
似ている issue
-
needs_triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 2 日以内に返信
-
kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
kubernetes-sigs/cluster-api-provider-ibmcloud#3023 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: message-level cache_control on chat messages is dropped, so Anthropic prompt caching never triggers対応中かも @Atharva-Kanherkar が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
メンテナーはふだん 1 日以内に返信
-
documentation good first issue help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100
eugenioenko/ttt#1000 ·
メンテナーはふだん 1 日以内に返信
-
bug needs-acceptance wg/developer-experience-ecosystem
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
vllm-project/semantic-router#5249 ·
メンテナーはふだん 1 日以内に返信