我在作为 docker 容器和我的 nginx 反向代理在 apache(+php-fpm)上运行的 nextcloud 实例方面遇到了问题。
当我打开 Nextcloud URL 时,nginx 代理将请求发送给 apache,apache 将我重定向到 /index.php/login。但是,出于某种原因,nginx 为 /index.php/login 返回 404。
这是我的 nginx 日志:
172.19.0.0 - - [29/Nov/2021:22:32:01 +0000] "GET / HTTP/1.1" 302 0 "-" "Some UA-String"
172.19.0.0 - - [29/Nov/2021:22:32:01 +0000] "GET /index.php/login HTTP/1.1" 404 548 "-" "Some UA-String"
我的 nginx 配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name cloud.example.com;
ssl_certificate [...];
ssl_certificate_key [...];
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_intercept_errors on;
proxy_pass http://nextcloud-httpd; #nextcloud-httpd is apaches hostname in the docker network
}
}
为什么 nginx 不将 /index.php/login 传递给 apache,但传递所有其他请求?哦,如果我直接访问 apache,一切正常,所以一定是 nginx 代理。
感谢您的帮助〜anghenfil
答案1
我找到了问题!我需要将 overwriteprotocol 选项添加到我的 nextcloud 配置中以坚持使用 https。基本上每次我重定向时,nextcloud 都会将我重定向到 http,这是反向代理的已知问题和典型的 RTFM 情况:https://docs.nextcloud.com/server/19/admin_manual/configuration_server/reverse_proxy_configuration.html
最好的安格菲尔