跳转到主要内容
下面的配置按公网访问里推荐的做法:同一个域名 molesignal.example.com,内网 DNS 解析到 nginx 的内网地址 10.0.0.10,公网 DNS 解析到公网地址 203.0.113.10。两个 server 用同一张证书,按监听地址区分。只保留实际用到的 location。

公共部分

把上游、公网日志格式和限流区放在 http 块里,例如 /etc/nginx/conf.d/molesignal.conf 的开头:
每个转发位置都用同一组代理设置,放进 /etc/nginx/snippets/molesignal-proxy.conf:

内网入口

内网入口转发全部路径,与没有公网入口时一样。实时查询是流式响应,不能缓冲:

公网入口

公网入口只列出要开放的路径,每个路径只收它用到的方法,最后的 location / 对其他一切返回 404:
limit_except GET 同时放行 HEAD。要按来源地址收紧某条路径,在它的 location 里加 allow 和 deny all;,例如只允许 Azure 服务标记 AzureBotService 里的地址段访问 Teams 的回调。

状态页的自定义域名

状态页绑定了 status.example.org 时,为它加一个公网 server,只放行状态页的根路径、接口和网页文件:
由 MoleSignal 自动签发自定义域名的证书时,TLS 在 MoleSignal 上终止,nginx 只能用 stream 模块按 SNI 直通,看不到路径,也就不能只放行状态页。要在入口上限制路径,就把证书放在 nginx 上管理。

只有一个入口时

nginx 只有一个监听地址时,用来源地址区分:公网 server 里的开放路径保持不变,把最后的 location / 换成只允许公司网络和 VPN 的地址段,再补上实时查询的流式设置:
这时内网请求也走同一个 server,client_max_body_size 要放宽到 10m,访问日志也会记下内网请求的路径。nginx 前面还有负载均衡时,用 set_real_ip_from 和 real_ip_header 取到原始地址,否则 allow 看到的都是负载均衡的地址。

检查

检查配置并重新加载:
从公网请求登录接口,应返回 404:
从公网不带 Token 请求告警接入,应返回 401,说明请求到了 MoleSignal:
最后在 _sys 组织的 设置 → 客户端 IP 识别 里,把 nginx 的地址列为受信任的代理,见客户端 IP 识别。
最后修改于 2026年10月31日