- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Программисты поставили задачку...
На сервере есть пользователь system, в папке /var/www/system/data/www/system.com лежит движок, который генерирует при помощи php и mysql страницы и сохраняет их в качестве кеша в папке /var/www/cache/data/www/имя_домена/, которая принадлежит юзеру cache.
Имя_домена - это любой сайт, работающий на движке. Короче, система мультисайтовая.
По идее, если любая страница уже существует, то движок её из папки юзера cache выдать посетителю. Выдать её должен nginx (0.6.32) без участия apache.
То есть открываем имя_домена/page.html, nginx проверяет, если она есть в папке /var/www/cache/data/www/имя_домена/, то он выдаёт её. Если такой страницы нет, то запрос должен перенаправляться к apache, чтобы сгенерировать страницу.
Для этого есть такой конфиг в nginx:
server {listen 127.0.0.1:80;
server_name system.com www.system.com;
rewrite ^(/manager/.*)$ https://$host$1 permanent;
error_page 404 = @fallback;
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 / {
root /var/www/cache/data/www/$host_without_www;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8080;
}
}
#конец конфига кеша
location / {
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 @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;
}
}
В общем, эта конструкция совершенно не хочет работать: не ищет кешированные файлы в папке /var/www/cache/data/www/имя_домена
Пробовал добавить вместо
location / {root /var/www/cache/data/www/$host_without_www;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8080;
}
}
это
location .* ^/ {root /var/www/cache/data/www/$host_without_www;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8080;
}
}
Но происходит всё наоборот: страницы из /var/www/cache/data/www/$host_without_www выдаются, а вот если файла нет, сервер выдаёт ошибку 404.
Пробовал и так, и сяк. Но не получилось заставить работать как надо. Может кто знает, как правильно сконфигурировать? :rolleyes:
з.ы. характеристики сервера: debian, ispmanager, nginx, apache.
Всё просто
root /var/www/cache/data/www/$host_without_www;
try_files $uri @backend;
}
//ваш апач тут
location @backend {
proxy_pass http://127.0.0.1:8080;
...
}
Dimanych, Спасибо огромнейшее. Всё работает. 🍻
рад помочь ;)