У меня проблемы с пониманием, когда включается прокси-буферизация в следующей ситуации:
Когда пользователь запрашивает файл для загрузки, Website app
указывает Website reverse proxy
на go извлечь его через X-Accel-Redirect
на File backend
. Таким образом, ответ (файл) go от File backend --> Backend reverse proxy --> Website reverse proxy --> User
.
У меня были проблемы с директивой proxy_max_temp_file_size
и медленными соединениями: загрузка почти всегда заканчивалась ошибкой на ~ 1024 Мб, когда скорость была ниже ~ 19Mb / с. Я предполагаю, что выше этой скорости размер файлового буфера никогда не достигал 1024 МБ, потому что он был достаточно быстро очищен (загружен), верно?
Отключение proxy_buffering
на обоих обратных прокси-серверах в краткосрочной перспективе уменьшило ошибку, но насколько я понимаю, это рискованно и открывает медленные атаки Лориса : соединение остается открытым на обоих серверах до тех пор, пока продолжается загрузка.
Стоит ли отключать только proxy_buffering
на Backend reverse proxy
и увеличьте proxy_max_temp_file_size
до максимального размера файла (~ 10Gb)? Каковы будут последствия? Разве несколько дисков по 10 Гб при медленном соединении не заполняют диск?
+---+
+-----------------------+ |
| | |
| File backend | |
| | |
+-----------^-----------+ |
| |
| | Server #2
+-----------v-----------+ |
| | |
| Backend reverse proxy | |
| | |
+-----------^-----------+ |
| +---+
|
| +---+
+----------+ +-----------v-----------+ |
| | | | |
| User | <-------> | Website reverse proxy | |
| | | | |
+----------+ +-----------^-----------+ |
| |
| | Server #1
+-----------v-----------+ |
| | |
| Website app | |
| | |
+-----------------------+ |
+---+