Nginx 到 Apache2 Location 指令、proxy_pass、单独 IP、HTTPS 到 HTTP 重定向、nextcloud

Nginx 到 Apache2 Location 指令、proxy_pass、单独 IP、HTTPS 到 HTTP 重定向、nextcloud

好的,我有 2 台服务器,一台在 192.168.1.100 上运行 nginx 的前端,一台在 192.168.1.151 上运行 apache2 的后端。我在后端服务器的端口 80 上运行了 nextcloud,我想从在 443 上运行 https 的前端服务器代理到它。我在正确配置它时遇到了一些问题。

我尝试了几种配置,这个配置是最接近的。这是我的 nginx location 指令:

 location /nextcloud/ {
            proxy_pass http://192.168.1.151:80/nextcloud/;
            proxy_read_timeout    90;
            proxy_connect_timeout 90;
            proxy_redirect        off;

            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 https;
            proxy_set_header      X-Forwarded-Port 443;
            proxy_set_header      Host $host;
    }

这是我的 nextcloud config.php 文件:

    'trusted_domains' =>
  array (
    0 => '192.168.1.151'        ,
    1 => '192.168.1.100'        ,
    2 => '*******.******.org' ,
  ),
  'datadirectory' => '/var/www/nextcloud/data/',
  'overwrite.cli.url' => 'https://********.*********.org/nextcloud/',

当我尝试使用 URL 时,我确实收到了 nextcloud 登录提示,但没有格式(我认为这与 https 与 http 有关?)这是我得到的图片:

nextcloud_error

我在 GOGS (Git on Go) 上遇到了几乎相同的问题。我已经在单个服务器(不是多个 IP)上使用 apache2 完成了此设置,但似乎无法使其与 nginx 和单独的 IP 一起工作。

编辑:应该添加我的 chrome 控制台日志。正如我所怀疑的,它充满了 404 错误,例如:https://******.*******.org/nextcloud/core/js/login.js?v=49006b299079b9bc3c4fcdf3d018d44a

我可以轻松地在 /var/www/nextcloud/core/js/login.js 找到此文件,因此该文件肯定存在。有什么想法吗?

答案1

我的配置中缺少的主要部分是proxy_redirect http:// https://; 这会将所有 http 流量重定向到 https,而不会出现任何问题。经过一些调整,让它运行得更好,这是我当前的工作配置:

 location ^~ /nextcloud/ {
            proxy_pass http://192.168.1.151/nextcloud/;
            proxy_redirect  http:// https://;

            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_set_header      Host $host:$server_port;
    }

相关内容