У меня есть внутренний сервер IIS, на котором работает WebDAV, который используется непосредственно для загрузки и загрузки файлов из приложения Android.
Мой внутренний DNS разрешает https://webdav.mydomain.com напрямую к IIS (минуя NGINX), и эта внутренняя связь работает без проблем. Скорость загрузки и выгрузки не является фантастической для доступных скоростей беспроводной сети, но это то, к чему я привык в своей конфигурации IIS (будь то из-за ограничений моего оборудования или просто ограничений IIS WebDAV).
Внешний по отношению к сети URL-адрес разрешается в общедоступный IP-адрес моего сервера NGINX. При удаленном использовании приложения скорость загрузки также кажется приемлемой (~25 МБ/с).
Однако скорость загрузки низкая. Они составляют примерно половину скорости загрузки.
Однако более важным, чем медлительность, является очень большая задержка в конце загрузки перед ее завершением.
Мой клиент показывает статус загрузки, в котором сообщается количество загружаемых байтов и общий размер загрузки. Когда загрузка достигает около 99% от общего размера загрузки, она просто находится там некоторое время, прежде чем окончательно завершиться.
Для файла размером 50 МБ он остановится примерно на 49 МБ и подождет около 30 секунд перед завершением. Загрузка 3 ГБ ждала не менее 5 минут, прежде чем, наконец, успешно завершилась.
Эта проблема вообще не существует внутри, когда сервер NGINX не задействован. Я согласен с тем, что внешняя пропускная способность будет ниже, и даже ограниченное аппаратное обеспечение NGINX может иметь дополнительное регулирование. Но я не уверен, почему такая большая задержка в том, что NGINX может завершить загрузку на сервер IIS.
Ниже приведена соответствующая конфигурация NGINX:
вверх по течению webdav_backend {
сервер 10.10.10.102:443;
поддержка активности 100;
}
сервер {
слушать 443 ssl http2;
имя_сервера webdav.mydomain.com;
proxy_set_header Хост $host;
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 $ схема;
proxy_set_header X-Forwarded-Protocol $ схема;
прокси_перенаправление выключено;
прокси_буферизация выключена;
proxy_connect_timeout 180 с;
proxy_send_timeout 180 с;
proxy_read_timeout 180 с;
fastcgi_send_timeout 180 с;
fastcgi_read_timeout 180 с;
прокси_http_версия 1.1;
proxy_set_header Соединение "";
местоположение @прокси {
прокси_пасс https://webdav_backend;
}
место расположения / {
try_files $uri @proxy;
client_max_body_size 4G;
}
журнал доступа /opt/var/log/nginx/webdav.mydomain.com.remote.log удаленные_хосты if=$remote_hosts;
журнал_доступа /opt/var/log/nginx/webdav.mydomain.com.access.log;
error_log /opt/var/log/nginx/webdav.mydomain.com.error.log;
}