Hi, Igor.
>> Держать апач на бакэнде заставляют следующие функции:
>> 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;
> }
> ...
> }
Не удобно - это дело динамично меняется, переделывать конфиг совсем не
с руки. Сейчас файл автоматом меняется. Нельзя ли как-то тоже здесь
вынести это дело из конфига ?
>> 2) layout'ы, И верхний И нижний, реализовано
>> LayoutDefaultHandlers Off
>> LayoutHandler text/html
>> LayoutHandler text/plain
>> LayoutHeader /var/www/domen.ru/header.html
>> LayoutFooter /var/www/domen.ru/footer.html
>> критично держать ОБА.
> Но для картинок-то они не нужны ?
смысле? на сайтах не картинки лежат, а странички (ну с картинками
конечно), сайты то есть, информация, "я&моя собачка". К страничкам
надо рекламу/объявления добавлять, и сверху и снизу.
ограничение (3) имеет смысл тот, чтобы сайты были, содержательные, а
не дешевая свалка картинок для левых внешних сайтов.
>> 3) Хотя это вероятно УЖЕ можно средствами nginx реализовать -
>> ограничить превращение сайта во "внешнее хранилище + внешний трафик"
>> картинок для левых сайтов, реализовано простым отсевом тех, кто без
>> реферера их тянет
>> RewriteCond %{HTTP_REFERER}
>> !^http://[0-9a-z][0-9a-z-]*[0-9a-z]\.domain\.ru$ [NC]
>> RewriteCond %{HTTP_REFERER}
>> !^http://[0-9a-z][0-9a-z-]*[0-9a-z]\.domain\.ru/.*$ [NC]
>> RewriteRule ^.*\.(gif|jpeg|jpg)$ - [F,L,NC]
>> это вобщем уже не критичный момент, однако были прецеденты, трафик
>> фигачил "не по делу", да и нагрузка :-))
> http://sysoev.ru/nginx/docs/http/ngx_http_referer_module.html
>> 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;
}
}
ну вобщем-то да, практически оно то же самое и есть.
Пробегало сообщение, что схема одного сервера не сработала:
> Сделал по твоей рекомендации:
> location / {
> if ($host ~* (([a-z0-9-])([a-z0-9-])[a-z0-9-]*)\.([a-z0-
> 9-]+\.[a-z]+)$) {
> set $rootdir all/hosting/$4/$2/$3/$1;
> }
> access_log /var/log/nginx8080_access_log 123;
> root /$rootdir;
> }
> Но не помогло:
> 2006/02/09 09:48:52 [error] 17480#0: *295 open() "/$rootdir/myfile.jpg"
> failed
> (2: No such file or directory), client: xx.xx.xx.xx, server:
> myhosting.ru, URL: "/
> myfile.jpg", host: "tm.myhosting.ru:8080"
--
engineer