假设我有几个用于监控后端服务的 Web UI 站点。
我想让它们可以从网络上访问(由 Auth 保护),但最好捆绑在一个子域下,并且可以通过各种 URL 访问,例如:
https://monitor.mydomain.com/my-service-monitor/
使用 nginx,如果我使用类似的重写规则
server {
listen 443 ssl;
server_name monitor.mydomain.com;
# auth stuff here...
location /my-service-monitor/ {
rewrite ^/my-service-monitor(/.*)$ $1 break;
proxy_pass http://my-service-monitor;
}
}
发生的事情是重定向有效,但是因为所有静态内容都引用根 URL,所以它没有按预期显示(因为后端站点正在输出查看根 / url 的 HTML,而不是相对 URL monitor.mydomain .com/my-service-monitor/...
我该如何解决这个问题,或者有更简单的解决方案吗?(我可以使用多个子域,但这在 IMO 的外部暴露太多了)
我正在考虑重定向(返回 301 ...)到子域根 URL 但在不同的端口上,然后添加一个服务器块监听该端口代理到服务器,但我觉得这将是身份验证问题。
任何见解将不胜感激。
您需要教您的后端应用程序为页面生成正确的 URL。显然,有些人正在编写自定义 lua 代码来修改从 nginx 中返回的 HTML,但老实说,我建议避免这样做,因为这太疯狂了。
我最终在同一个子域上为每个站点分配了一个不同的端口
问题是服务器块应该在 server_name 中包含端口。起初我只有监听值列出端口,但它不适用于同一个 server_name 上的多个站点,所以需要