具有多个 Docker 容器的反向代理 Nginx

具有多个 Docker 容器的反向代理 Nginx

我正在将 nginx 设置为多个 docker 容器的反向代理。它只能从 192.168.1.2 上的本地网络使用。由于子域无法与 IP 结合使用,因此我希望将所有 docker 容器放在单独的子文件夹中,因此 192.168.1.2/nextcloud 等。

问题始于 Nextcloud。URL 会自动重写为 192.168.1.2/login,导致 404。我该如何修复此问题?

server {
  listen                443 ssl http2;
  server_name           192.168.1.2;
  include               /etc/nginx/conf.d/ssl-params.conf;
  location ~/nextcloud {
    proxy_pass                       http://nextcloud:80;
    proxy_set_header X-Real-IP       $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host            $host;
  } 
  location ~/bookstack {
    proxy_pass                       http://bookstack:80;
    proxy_set_header X-Real-IP       $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host            $host;
  }
}

答案1

Nextcloud 允许您使用“overwritewebroot”选项设置基本 URL(https://docs.nextcloud.com/server/13.0.0/admin_manual/configuration_server/config_sample_php_parameters.html#proxy-configurations) 但正如已经指出的那样,您的所有应用程序都必须支持类似的选项。

另外,不要忘记您不受子域的限制,您可以根据自己的情况使用完整域名或不同的 IP。这不是处理问题的最佳方式,但您可以考虑为主机的网络接口分配多个 IP,这样您就可以分离套接字。

相关内容