Как настроить отдачу статики?
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Духовитин
- мл. сержант
- Сообщения: 125
- Зарегистрирован: 2014-12-17 8:46:05
Как настроить отдачу статики?
Добрый день Товарищи!
У меня к вам такой вопрос. Понадобилось раздавать с веб-сервера статические файлы разные. Но проблема в том, запрос на отдачу файла даётся посредством php скрипта. Условно ссылкой вида: http://server.ru/getfile.php?id=xxx
Знаю, что отдавать файлы средствами php - зло, и хочу поэтому сделать всё правильно и красиво. Скажите есть ли пути, чтобы в php отрабатывалась вся логика по проверке доступа/типу и т.п., а затем бы отдча файла производилась силами веб-сервера?
У меня к вам такой вопрос. Понадобилось раздавать с веб-сервера статические файлы разные. Но проблема в том, запрос на отдачу файла даётся посредством php скрипта. Условно ссылкой вида: http://server.ru/getfile.php?id=xxx
Знаю, что отдавать файлы средствами php - зло, и хочу поэтому сделать всё правильно и красиво. Скажите есть ли пути, чтобы в php отрабатывалась вся логика по проверке доступа/типу и т.п., а затем бы отдча файла производилась силами веб-сервера?
Кто не рискует - тот не пьёт шампанского.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Neus
- капитан
- Сообщения: 1961
- Зарегистрирован: 2008-09-08 21:59:56
Как настроить отдачу статики?
Вэбсервер nginx?
- Духовитин
- мл. сержант
- Сообщения: 125
- Зарегистрирован: 2014-12-17 8:46:05
Как настроить отдачу статики?
Уважаемый, но ведь не в том вопрос.
Не в выборе веб сервера, а в пути которым от ссылки вида: http://сервер/id=fileID, где fileID - это идентификатор файла в БД. С последующим выдиранием информации об этом файле из БД, после этого уже только есть информация о реальном пути этого файла в ФС, чтобы этот путь передать или в функцию file_fet_contents() или что я и хочу узнать - как отдать этот путь веб-серверу, чтобы он уже отдал клиенту этот файл с диска.
Не в выборе веб сервера, а в пути которым от ссылки вида: http://сервер/id=fileID, где fileID - это идентификатор файла в БД. С последующим выдиранием информации об этом файле из БД, после этого уже только есть информация о реальном пути этого файла в ФС, чтобы этот путь передать или в функцию file_fet_contents() или что я и хочу узнать - как отдать этот путь веб-серверу, чтобы он уже отдал клиенту этот файл с диска.
Кто не рискует - тот не пьёт шампанского.
- Amadeus
- ст. сержант
- Сообщения: 332
- Зарегистрирован: 2008-10-05 12:42:44
- Откуда: Kiev
Как настроить отдачу статики?
Духовитин писал(а): Условно ссылкой вида: http://server.ru/getfile.php?id=xxx
Знаю, что отдавать файлы средствами php - зло, и хочу поэтому сделать всё правильно и красиво. Скажите есть ли пути, чтобы в php отрабатывалась вся логика по проверке доступа/типу и т.п., а затем бы отдча файла производилась силами веб-сервера?
а можно узнать чем провинился PHP что вы через него хотите отдавать что то?) PHP - интерпретируемый язык программирования, и без веб сервера + mod_php/fastcgi (cgi не пишу, так как это не для серьезных вещей) хоть миллиард php строк остаются буквами.
Отдачей статики ВСЕГДА занимается веб сервер. Другой вопрос как и какой. Посему у Вас во втором посту правильно спросили.
Тут два варианта (c использованием nginx, как наиболее правильного средства отдачи стат файлов):
1) И наиболее правильный, если у вас файло, имеет ряд всем известных расширений, и это отражено в урлах то:
Код: Выделить всё
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf) {
root $static_dir;
expires 30d;
more_clear_headers 'Server';
add_header Server Hello;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block;";
add_header Strict-Transport-Security "max-age=31536000";
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_comp_level 9;
gzip_types text/plain text/html text/css image/jpeg application/javascript image/png;
}
2) Если у вас программисты - марсиане, и сделали стат файлы аля http://server.ru/getfile.php?id=тут набор символов без расширения
То либо
getfile.php
Обрабатывайте вот этот локейшн и потом тоже самое, либо ловите реквест ури - и потом так же тоже самое
Нет ничего невозможного
- Neus
- капитан
- Сообщения: 1961
- Зарегистрирован: 2008-09-08 21:59:56
- Духовитин
- мл. сержант
- Сообщения: 125
- Зарегистрирован: 2014-12-17 8:46:05
Как настроить отдачу статики?
Ладно попробую объяснить ещё.
1. Файлы для отдачи клиентам лежат вне папке DOCUMENT_ROOT'а веб-сервера.
2. Файл можно скачать только если клиент удовлетворяет неким критериям (авторизован, есть доступ в скачиваемому файлу и т.п.)
3. Критерии на основании которых принимается решение о возможности/невозможности скачивания находятся в БД. Что-то типа:
В качестве уточнения своего вопроса, сформулирую так: В файлохостингах навроде рапидшаре, депозита и других, как сделано? Примерно. Ведь там по любому не силами скриптового языка отдаются все эти гигабайты, но в то же время ссылка сформированая на файл и не скачивается если её вбить на другом компе или по истечении каких-то ещё условий. Т.е. сервак при отдаче файла по ссылке, проверяет некие условия на основании которых отдаёт файл и шлёт на хер. Так вот как это делается?
Отправлено спустя 5 минут 29 секунд:
Не в обиду мужики, но вы с высоты своих знаний похоже разучились слышать других.
Сам похоже нашёл решение. http://forum.shelek.ru/index.php/topic,30362.0.html
Попробую, но похоже то, что надо.
Отправлено спустя 11 минут 19 секунд:
Ещё более конкретно решение вот: https://habrahabr.ru/post/37686/
1. Файлы для отдачи клиентам лежат вне папке DOCUMENT_ROOT'а веб-сервера.
2. Файл можно скачать только если клиент удовлетворяет неким критериям (авторизован, есть доступ в скачиваемому файлу и т.п.)
3. Критерии на основании которых принимается решение о возможности/невозможности скачивания находятся в БД. Что-то типа:
Код: Выделить всё
Table users (
id SERIAL,
userName
)
Table files (
id SERIAL,
File_FS_Path
)
Table userFile (
id SERIAL,
userID BIGINT,
fileID BIGINT,
isAllowed TINYINT,
FK (userID) -> users(id),
FK(fileID) -> files(id)
)
Проблема с тем, чтобы давать клиенту ссылку на статический файл вида: http://server/static_file.pdf в том, что в этом случае не работает схема с определением возможности/невозможности доступа к файлу.
Точно так же не работает схема с разграничением доступа. Этот единожды сформированный урл на статический файл, считай доступен всем и всегда.
В качестве уточнения своего вопроса, сформулирую так: В файлохостингах навроде рапидшаре, депозита и других, как сделано? Примерно. Ведь там по любому не силами скриптового языка отдаются все эти гигабайты, но в то же время ссылка сформированая на файл и не скачивается если её вбить на другом компе или по истечении каких-то ещё условий. Т.е. сервак при отдаче файла по ссылке, проверяет некие условия на основании которых отдаёт файл и шлёт на хер. Так вот как это делается?
Отправлено спустя 5 минут 29 секунд:
Не в обиду мужики, но вы с высоты своих знаний похоже разучились слышать других.
Сам похоже нашёл решение. http://forum.shelek.ru/index.php/topic,30362.0.html
Попробую, но похоже то, что надо.
Отправлено спустя 11 минут 19 секунд:
Ещё более конкретно решение вот: https://habrahabr.ru/post/37686/
Кто не рискует - тот не пьёт шампанского.
- Amadeus
- ст. сержант
- Сообщения: 332
- Зарегистрирован: 2008-10-05 12:42:44
- Откуда: Kiev
Как настроить отдачу статики?
А где это было написано в условии изначальном?) Чуть корректнее описывайте условие. А не "отдать через php" *)Духовитин писал(а): 1. Файлы для отдачи клиентам лежат вне папке DOCUMENT_ROOT'а веб-сервера.
2. Файл можно скачать только если клиент удовлетворяет неким критериям (авторизован, есть доступ в скачиваемому файлу и т.п.)
3. Критерии на основании которых принимается решение о возможности/невозможности скачивания находятся в БД. Что-то типа:
То что вы изначально написали и то что в итоге оказалось - две разные вещи
Нет ничего невозможного