nginx (+apache) настройка virtual hosts

сервер apache nginx статика

nginx успешно отдаёт и забирает информацию в apache и раздаёт статику, но если на одном айпи настроено несколько доменных имён, то статика собирается только с первого доменного имени.
server {
listen 87.229.xxx.xx:80 accept_filter=httpready;
server_name site.org site.org site2.ru site3.info;

location / {
proxy_pass http://127.0.0.1:81/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ "\.(gif)$" {
access_log off;
root /usr/local/www/site.org/docs;
}
}

Если запросят http://site.org/image.gif
То nginx полезет в /usr/local/www/site.org/docs/image.gif

Но если запросят http://site3.info/header.gif
То nginx заместо того чтобы идти в /usr/local/www/site3.info/docs/header.gif
Снова полезет в /usr/local/www/site.org/docs/header.gif

Оно и ясно nginxу ведь только root /usr/local/www/site.org/docs указано.

Сайтов штук 20 на одном айпи.. Неужели нужно для каждого создавать server { ... } с одним айпи, но разными портами и "root" или есть другой выход?

Примечание:
Решил проблему с помощью map.

Примечание:
Ну вот как-то так:

map $host $name {
site1 dir1;
site2 dir2;
site3 dir3;
site4 dir4;
}
##################################################################server1
server {
listen 87.229.xzx.z:80 accept_filter=httpready;
server_name site1 default;
limit_req zone=one burst=500; ### to ddos
access_log off;
#access_log /var/log/nginx_access.log main;
location / {
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
location /status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.13.17; deny all; }
location ~* \.(jpg|jpeg|css|gif|png|txt|rar|zip|torrent|js|swf|ico|exe)$ { root /usr/local/www/$name/docs; expires 4h; }
location ~ /\.ht { deny all; }
}

map позволяет с каждым сайтом ассоциировать отдельную папку.
Ответы:
da est drogoi vixod :)
ya vigu shto ti polzuesh nginx kak reserve proxy na port 81 ... vso shto nada delat dobavit virtual hosts na httpd.conf
na primer:
NameVirtualHost 127.0.0.1:81
<VirtualHost 127.0.0.1:81>
...
ServerName xxxx1.ru
...
</VirtualHost>
<VirtualHost 127.0.0.1:81>
...
ServerName xxxx2.ru
...
</VirtualHost>
<VirtualHost 127.0.0.1:81>
...
ServerName xxxx20.ru
...
</VirtualHost>
подробнее можно?


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.