Держать апач на бакэнде заставляют следующие функции:
1) отключение неплательщиков (путём перенаправления на заданную
страничку), реализовано так
RewriteEngine On
RewriteMap block-domain-ru txt:/var/www/block.domain.ru
RewriteRule ^(/([^/]+)/.*)$ ${block-domain-ru:$2|$1}
файлик /var/www/block.domain.ru пополняется записями
firma74 http://domen.ru/pay.html
...
Это можно сделать примерно так:
http {
map $http_host $blocked {
firma74 http://domen.ru/pay.html;
...
}
server {
if ($blocked) {
rewrite ^ $blocked redirect;
}
...
}
Не удобно - это дело динамично меняется, переделывать конфиг совсем не
с руки. Сейчас файл автоматом меняется. Нельзя ли как-то тоже здесь
вынести это дело из конфига ?
map ... {
include /var/www/block.domain.ru;
}
но после каждого изменения нужно делать
nginx -t && kill -HUP `cat nginx.pid`
2) layout'ы, И верхний И нижний, реализовано
LayoutDefaultHandlers Off
LayoutHandler text/html
LayoutHandler text/plain
LayoutHeader /var/www/domen.ru/header.html
LayoutFooter /var/www/domen.ru/footer.html
критично держать ОБА.
Но для картинок-то они не нужны ?
смысле? на сайтах не картинки лежат, а странички (ну с картинками
конечно), сайты то есть, информация, "я&моя собачка". К страничкам
надо рекламу/объявления добавлять, и сверху и снизу.
Ну вот эти картинки нужно не проксировать, а отдавтаь сразу nginx'ом.
4) Самое основное, почему, даже имея всё это, в апаче была введена
схема фронтенд-бакэнд, это необходимость упрощенного конфига для
поддержки сайтов типа *.domen.ru.
То есть для vasya.domen.ru нужно чтобы DocumentRoot был скажем
/var/www/domen.ru/vasya, а для ivan.domen.ru DocumentRoot был
/var/www/domen.ru/ivan
Я правильно понимаю, что сейчас сделано так: - Apache -> backend ?
location / {
set $hostname main;
if ($http_host ~* "^(.+)\.domen\.ru.*$") {
set $hostname $1;
}
rewrite ^(.+)$ /$hostname$1 break;
proxy_pass http://backend.domen.ru.int;
}
кусок моего конфига:
server {
listen X.X.X.X:80;
server_name www.domen.ru *.domen.ru;
set $host_part "";
location /status {stub_status on; }
location / {
if ($http_host ~* "^(.+)\.domen\.ru.*$") {
set $host_part $1;
}
rewrite ^(.*)$ /$host_part/$1 break;
proxy_pass http://127.0.0.7;
}
}
ну вобщем-то да, практически оно то же самое и есть.
Пробегало сообщение, что схема одного сервера не сработала: