我有一个 edgerouter x sfp 作为互联网的主路由器。到此路由器,服务器与运行称为 swag 的反向代理 docker 连接,例如。我用来从互联网访问 nextcloud 和几个 ngnix docker 的letsencrypt。
这几乎很好用。因此,导航这些站点和 nextcloud 可以工作,但是当我开始下载大文件时,问题就开始了。
当我通过网络浏览器从 nextcloud 下载 20GB 文件时,根据 chrome,它由于“网络故障”而失败。我可以重新启动下载,并且可以在多次重新启动后完成下载(从下载菜单中的 kontext 菜单)。当我从 nginx 站点下载相同的文件时也会发生同样的情况,因此它与 nextcloud 没有直接关系。
但是,当我通过 OpenVPN 连接到我的网络并通过内部 LAN IP 下载文件时,我可以成功下载文件。因此,通过 OpenVPN 使用服务器的直接 IP 不会导致 chrome 中出现“网络故障”消息。
所以有人可以帮我找出问题所在:
- 是不是edgerouter x sfp配置错了(我只是加了端口转发位)
- 反向代理是问题吗(这里我从 docker 本身获取了建议的代理配置)
- 或者是其他东西?
编辑 1:nginx 配置文件:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name shop.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
# enable for ldap auth, fill in ldap details in ldap.conf
#include /config/nginx/ldap.conf;
location / {
# enable the next two lines for http auth
#auth_basic "Username and Password Required";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable the next two lines for ldap auth
#auth_request /auth;
#error_page 401 =200 /login;
include /config/nginx/proxy.conf;
resolver 127.0.0.11 valid=30s;
set $upstream_grafana nginx;
proxy_pass http://$upstream_grafana;
}
}
nextcloud 配置文件:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name nextcloud.*;
include /config/nginx/ssl.conf;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
location / {
include /config/nginx/proxy.conf;
resolver 127.0.0.11 valid=30s;
set $upstream_nextcloud nextcloud;
proxy_max_temp_file_size 2048m;
proxy_pass https://$upstream_nextcloud;
}
location ^~ /.well-known {
# The following 6 rules are borrowed from `.htaccess`
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
# Anything else is dynamically handled by Nextcloud
location ^~ /.well-known { return 301 /index.php$uri; }
try_files $uri $uri/ =404;
}
}
好的,我通过 mysel.f 弄清楚了
两个 Docker 都基于 nginx 服务器,并且有一个名为 proxy_max_temp_file_size 的属性,用于在将 docker 与反向 porxy 一起使用时设置临时文件的大小。现在我将它设置为一个非常低的值(100m),所以永远不应该调用超时,因此现在会发生网络故障。您也可以使用 proxy_max_temp_file_size=0 禁用它,但我不确定哪个更好,所以我目前将其保留在 100m。