Comments 12
А разве RoR не может просто слать тот заголовок, который хочет отправить разработчик (как в PHP через header функцию)? Тема с конфигом смотрится как-то… хм… непривычно.
А разве эта строчка из конфига гарантирует переносимость кода без его изменения?
PHP header я привел как пример. Определение типа используемого веб сервера и выдачу нужного заголовка реализуема и там.
PHP header я привел как пример. Определение типа используемого веб сервера и выдачу нужного заголовка реализуема и там.
Раскомментировали строчку — работает X-Accel-Redirect, закомментировали — sendfile(), вот вам и переносимость.
Суть в том, что разработчик приложения не парится, что там в данный момент используются и где вообще лежит статика, а просто зовет функцию send_file(), когда хочет отправить файл (логично, не правда ли?), и она за него делает всю магию. С php тут даже смешно сравнивать.
Суть в том, что разработчик приложения не парится, что там в данный момент используются и где вообще лежит статика, а просто зовет функцию send_file(), когда хочет отправить файл (логично, не правда ли?), и она за него делает всю магию. С php тут даже смешно сравнивать.
Фреймворк с языком действительно смешно сравнивать. А если серьезно, то на php или любом другом языке это реализуется точно также.
Вся идея рушится, когда разработчик пытается отправить файл из неожиданного расположения, например /tmp/my_cool_file.txt
А не надо пытаться это делать. Не надо вообще разрешать это делать. Сегодня этого хочет разработчик, а завтра этим воспользуется злоумышленник. Организуйте структуру вашего приложения, чтобы она была четкой и понятной, и файлы, которые нужно отдавать клиенту, все лежали в одном строго определенном месте.
Из поста это не понятно, но рельса при send_file занимает воркера, когда в случае из поста обработка отправки производится nginx-ом.
В принципе, можно было бы еще рассказать про aio в nginx.
Sign up to leave a comment.
Ruby on Rails и Nginx: эффективно отдаем большие файлы