- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть движок, шаблоны html лежат в /var/www/system/data/www/system.com/templates/
и их несколько и с разными именами, типа
/templates/odin/
/templates/dva/
и так далее.
И у всех этих шаблонов есть шапка - header.jpg, которая отдаётся из папок /var/www/system/data/www/system.com/templates/имяшаблона/header.jpg
Движок позволяет редактировать шапку сайта, но загружает в каталог /var/www/cache/data/www/имясайта/templates/имяшаблона/
Где имя сайта - любой домен (мультисайтовый движок).
Таким образом, нужно организовать отдачу nginx так, чтобы если шапка существует в /var/www/cache/data/www/имясайта/templates/имяшаблона/, то берётся оттуда. Если нет, то ищется в /var/www/system/data/www/system.com/templates/.
Вопрос: как реализовать?
location /templates/
{
root /var/www/;
try_files /cache/data/www/$host/templates$uri /system/data/www/$host/templates$uri @dummy;
}
location @dummy { return 444; }
Удивительно, но не работает. Может я чего неправильно делаю... :(
Вставляю код в основной конфиг, выглядит вот так:
listen 127.0.0.1:80;
server_name system.com www.system.com;
rewrite ^(/manager/.*)$ https://$host$1 permanent;
error_page 404 = @fallback;
#files cache
location / {
root /var/www/cache/data/www/$host_without_www;
try_files $uri @backend;
}
#end for cache folder
location /templates/
{
root /var/www/;
try_files /cache/data/www/$host/templates$uri /system/data/www/$host/templates$uri @dummy;
}
location @dummy { return 444; }
location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://system.com:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
set $host_without_www $host;
if ($host ~* www\.(.*)) {
set $host_without_www $1;
}
location ~ ^/$ {
rewrite .* /index.html;
}
location @backend {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://system.com:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /var/www/system/data/www/system.com;
access_log /var/www/httpd-logs/system.com.access.log;
location ~ /files {
root /var/www/cache/data/www/$host_without_www;
}
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Перезапускаю nginx и никакого эффекта...
Может быть location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ { перекрывает?
попробуйте прописать location ^~ /templates/
попробуйте прописать location ^~ /templates/
Прописал... Изображение выдаёт это:
А на самом сайте все картинки из стилей не грузятся вообще.
А что в error-лог? И ещё вместо location @dummy { return 444; } можно написать location @dummy { return 402; }, но это ничего не изменит а просто упростит отладку.
Boris A Dolgov добавил 07.07.2011 в 21:12
А, понял
вместо
try_files /cache/data/www/$host/templates$uri /system/data/www/$host/templates$uri @dummy;
нужно писать
try_files /cache/data/www/$host_without_www$uri /system/data/www/$host_without_www$uri @dummy;
вместо
try_files /cache/data/www/$host/templates$uri /system/data/www/$host/templates$uri @dummy;
нужно писать
try_files /cache/data/www/$host_without_www$uri /system/data/www/$host_without_www$uri @dummy;
Да я уже пробовал, но не работает...
Вот кусок лога
2011/07/07 23:16:48 [error] 23802#0: *66 open() "/var/www/system/data/www/system.com/templates/rus2/header.jpg" failed (2: No such file or directory), client: 46.146.10.116, server: system.com, request: "GET /templates/rus2/header.jpg HTTP/1.1", host: "26.system.com"
И ещё вместо location @dummy { return 444; } можно написать location @dummy { return 402; }, но это ничего не изменит а просто упростит отладку.
Это сделано.
LinuxMan добавил 08.07.2011 в 13:28
В общем, можем даже заплатить адекватную сумму, но только за реально работающую конфигурацию.