Многие из вас на своих нагруженных проектах используют nginx.
Я видел на форуме, что при этом многие отказываются от замечательного модуля imagecache, который позволяет автоматически генерировать несколько вариантов одной картинки с разными размерами. Вот мол, не генерируются картинки, когда стоит nginx перед апачом.
Зря! Вот конфигурация хоста в nginx, где всё замечательно работает
listen 88.212.201.85:80;
server_name test.ru;
location / {
proxy_pass http://127.0.0.1/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
location ~* /sites/all/files/imagecache/ {
root /home/www.test.ru/public_html;
error_page 404 = [user=backend]backend[/user];
}
location [user=backend]backend[/user] {
proxy_pass http://127.0.0.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
Комментарии
Где-то здесь я уже это видел И кто-то вроде даже утверждал, что nginx вообще мощнее Apache по настройкам...
Но всё равно: спасибо, что выложили....
P.S. Какой-то заголовок немного неудачный...
меня так умиляет, когда люди комментят, не читая
Почему не читая?
блин вот спасибо, а я то думаю че аватарки негенерятся)!
ну да, в принципе можно и так - большие фотки отдавать апачем а маленькие nginx-ом, но более правильно в nginx-е прописать что бы он все картинки отдавал сам а в случае их отсутствия передавал управление апачу
Спасибо пригодится.
не, народ
я от половины вас тащусь если честно
как можно комментить то, что не читал???
ну да, в принципе можно и так - большие фотки отдавать апачем а маленькие nginx-ом, но более правильно в nginx-е прописать что бы он все картинки отдавал сам а в случае их отсутствия передавал управление апачу
что это за идиотизм? где в конфиге написано, что большие картинки отдаются апачом,а маленькие nginx-ом??? ну бреееед
root /home/www.test.ru/public_html;
error_page 404 = [user=backend]backend[/user];
}
по-моему, то очень похоже на запись, которая говорит nginx-у, что если файла нет-запросить его у апача,а если есть-то отдать.
особенно если чуть-чуть подумать
Где-то здесь я уже это видел И кто-то вроде даже утверждал, что nginx вообще мощнее Apache по настройкам...
вообще-то пост не об этом
вообще-то пост не об этом
Я всего лишь сказал, что уже видел решение этой проблемы где-то в комментариях. А именно: как сделать так, чтобы модуль Imagecache работал вместе с nginx (разве пост не об этом ?). Также я помню, что автор этого сообщения (в котором было решения) то ли прямо в этом же сообщении, то ли где-то ещё, но в это же время сказал, что nginx очень мощен в настройках (именно так у меня запомнился тот комментарий). Об этом я и информировал общественность. В тоже время я подумал, что всё равно хорошо: быстрее в будущем найду, если понадобится.
С чего Вы взяли, что я откомментировал, даже не прочитав пост? Уверяю Вас: до того, как оставить этот комментарий я даже тщательно проанализировал, где же обеспечивается требуемая функциональность (ибо в прошлый раз я как-то конкретно не стал в этом разбираться). Поэтому применительно ко мне(а второй комментарий явно относился ко мне) мне был несколько непонятен и неприятен....
Так, к слову: оффтопик начали Вы...
в котором было решения
вы неправы. не было.
по крайней мере, Игорь Сысоев не считает это решением
Специально нашёл, откуда же у меня это отпечаталось... http://www.drupal.ru/node/13682 и http://www.drupal.ru/node/13598
Если не решение - хорошо, спасибо за верное. Но в глазах того, кто практически не знаком с nginx - это было решение. Тем более, что отрицательных отзывов я не видел. Просто вся статья была построена по принципу "никто не знает, как же это сделать", на что у меня возникла естественная реакция: кажется, кто-то знал. Ладно, закончим оффтопик соверешенно не по делу. Просто мне до сих пор непонятно,почему вы решили, что я прокомментировал, не прочитав и не вникнув... Тем более, ничего отрицательного сказано не было
потому что правильного решения не было
Дефект модуля spam...
Спасибо огромное за пояснения
просто я увидел /sites/all/files/imagecache/
и подумал что это сработает с тем что выдается через imagecache
но ведь картинки то лежат не в imagecache директории а в просто files
а вообще еще лучше сделать что бы через nginx выдавалось все, кроме php, - и css и баннеры и картинки темы
что то навроде этого
if (-f $request_filename) {
rewrite \.(module|inc|info|engine|sql|sh|php)$ / permanent;
}
root /home/www.test.ru/public_html;
error_page 404 = [user=backend]backend[/user];
}
полный бред
if (-f $request_filename) {
rewrite \.(module|inc|info|engine|sql|sh|php)$ / permanent;
}
так делать просто нельзя
root /home/www.test.ru/public_html;
error_page 404 = backend;
}
а это отключит чистые ссылки
делать надо-как в первом посте.
ну а как сделать что бы все что было вида картинок, файлов и подобное - грузились через nginx в не зависимости от пути, а в случае не нахождения файла передавалось на apache?
много локейшенов
подписался
а как сделать чтобы работал imagecache если стоит только nginx без апача?
gumk примерно так:
if (!-f $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1;
}
}
например у тебя путь к рисунку на странице /files/imagecache/imagecache-cover-full/covers/cover_60_1_1.jpg, нужно чтоб обращение было такое: /index.php?q=/files/imagecache/imagecache-cover-full/covers/cover_60_1_1.jpg (можно в браузере вбить этот путь и покажется рисунок) тогда рисунок сгенерится
можно более подробно рассказать как это сделать
вариант выше не помог(((
Вот так например (не полный конфиг):
listen 8080;
server_name 192.168.0.5;
root /var/www-nginx/drupal;
location / {
try_files $uri $uri/ [user=drupal]drupal[/user];
index index.php index.html index.htm;
}
location ~ \.php$ {
try_files $uri [user=drupal]drupal[/user];
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location [user=drupal]drupal[/user] {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}
}
а можно полный конфиг, рабочий конфиг, что только не перепробовал((
С этим конфигом imagecache работает, только версия nginx нужна 0.7.51 и выше, так как используется новая директива try_files. Так стоит проверить права записи на соответствующие каталоги.
ответ sky-host:
===
К сожалению, индивидуальная настройка nginx для аккаунтов вирт. хостинга невозможна, так как это повлияет на работу всех остальных аккаунтов на сервере. То же самое относится ко всем остальным сервисам (apache, mysql, ftp, pop3, smtp)
===
Если у Вас nginx, то ищем строку:
location / {
root /mnt/www/www.site.ru;
index index.php index.html;
}
меняем на:
location / {
root /mnt/www/www.site.ru;
index index.php index.html;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
ВСЕ! imagecache просто просит правильные ссылки (пути)
и напишите: Решено!
TommyFar, это все логично, только автор не рекоммендует такое исползование - http://sysoev.ru/nginx/docs/faq.html (в низу старницы), теперь модно try_files юзать
Спасибо, Stalker-g2!
Все гениальное просто) Или почти просто...
Спасибо почти помогло...
Кстати, вместо location ~* /sites/all/files/imagecache/ лучше прописать location ^~ /sites/all/files/imagecache/
Здраствуйте!
Я сталкнулся с этой же проблемой! После перехода на vds на nginx imagecache не работает.
Из того что я понел нужно всё это добавить в nginx.conf. Я пробовал и не работает. Просьба напишите целиком то что я должен добавить и может мне стоит ещё что нибудь сделать (перезагрузка сервера) чтобы заработал.
сайт veevo.ru, буду благодарен!
Лично я сделал вот так сразу за блоком объявления бекэнда:
"error_page 404 = @backend;".
Просто и работает)
P.S.: [сарказм]и где это существуют серверы, которые нужно перезагружать для чтения конфиг файла?))))[/сарказм]
subscribe