Reverse-Proxy
路由器或反向代理 - 網路故障
我有一個 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。