Стратегия буферизации для загрузки большого файла и двух nginx прокси между приложением и клиентом - PullRequest
0 голосов
/ 11 февраля 2020

У меня проблемы с пониманием, когда включается прокси-буферизация в следующей ситуации:

Когда пользователь запрашивает файл для загрузки, 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      | |
                       |                       | |
                       +-----------------------+ |
                                             +---+

...