配置NextCloud和Nginx反向端口转发-登录身份验证错误

时间:2018-10-17 21:13:55

标签: nginx

我已经在Web服务器上设置了一个nginx反向代理服务器,该服务器正在接收SSL流量,并将其反向代理到Web服务器上的端口8080,该端口是运行nextcloud docker映像的公开端口。我可以从桌面Web浏览器登录,但不能从iPhone登录。从应用程序登录时,收到错误消息“禁止访问,无效请求”。 This Github问题将问题识别为从请求中删除了auth标头,尽管它提供的解决方案是针对Apache而非Nginx的。我真的不熟悉授权标头。我将如何修改Nginx服务器指令以解决该问题?

当前设置

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name cloud.foo.com;

    ssl_certificate /etc/letsencrypt/live/cloud.foo.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/cloud.foo.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    location / {
        proxy_pass         http://127.0.0.1:8080/;

        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   Host             $host;
    }
}

1 个答案:

答案 0 :(得分:0)

您可能需要添加一个设置,以在代理服务器的响应中显式传递Authorization标头。

例如:

location / {
    proxy_pass         http://127.0.0.1:8080/;

    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header   Host             $host;
    proxy_pass_header  Authorization;
}

根据我在另一项身份验证服务中看到的反向代理设置,默认情况下,Nginx可能不会将Authorization头从代理服务器的响应传递到客户端。尽管the documentation中未列出,但可能有必要避免干扰authentication modules