| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > Настройка nginx на отдачу существующей статики. |
| Автор: Хоббит 24.11.2008, 18:31 |
| Надо поставить nginx фронтэндом к апачу, чтобы он отдавал статику. Но файл статический может не существовать, тогда запроса надо передать пхп скрипту, который этот файл создаст и вернет. Когда был 1 апач, это делалось с помошью rewrite_mod, проверялось, если файл есть, то его возращал апач сразу, если нет, то редирект на скрипт. Есть ли такие возможности в nginx. |
| Автор: Хоббит 24.11.2008, 19:07 |
| В nginx есть http_rewrite_module, но мне надо сделать следующее. RewriteCond $1 !^cached RewriteCond %{DOCUMENT_ROOT}/image/cached/$1 !-f RewriteRule ^image/(.*)$ ./dynimage.php RewriteCond $1 !^cached RewriteRule ^image/(.*)$ ./image/cached/$1 Поясню. Если запрашивается картинка /image, и файла в папке /image/cached/остальной_путь нет и разумется после image идет не cached, то отправить на скрипт dynimage.php. |
| Автор: Хоббит 25.11.2008, 19:35 |
| Справился так. В определении server {...} root /var/www/path_to_root // Если в uri есть image то вырезаем путь к картинке (все что после image) if ($request_uri ~* "image/(.*)$") { set $image_path $1; } // Если картинка существует, то отдаем ее if (-f $document_root/image/cached/$image_path) { rewrite ^(.+)$ /image/cached/$image_path break; } // Иначе запрос идет к апачу. location / { proxy_pass http://apache_host:8080 } Но что то мне этот способ корявым кажется. Во первых правильно ли отдавать картинку с помощью rewrite И можно ли это записать в 1 условие а не в 2. |
| Автор: Хоббит 26.11.2008, 19:23 |
| Объединить 2 условия в одно нельзя. Необходимо делать, как я написал. Нашел ответ в рассылке по nginx. |
| Автор: rapaman 10.12.2008, 20:07 |
| Это можно собрать и в один location. |
| Автор: Хоббит 11.12.2008, 13:25 |
| Пример бы привел. |