好的,我有 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 有关?)这是我得到的图片:
我在 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;
}