我正在将 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,这样您就可以分离套接字。