nginx как прокси для нескольких веб серверов
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2014-09-05 12:59:16
nginx как прокси для нескольких веб серверов
Исходные данные: есть домен example.ru, есть 3 виртуальные машины (1-веб сервер apache с сайтом IP=192.168.1.1, 2-почтовый сервер, на нем же веб сервер apache с веб мордой для почтового сервера IP=192.168.1.2, 3-nginx IP=192.168.1.3). Все http запросы снаружи редиректятся на 1 виртуалку IP=192.168.1.1, все smtp, pop, imap соответственно на 2 виртуалку IP=192.168.1.2.
Задача: как настроить nginx, что бы при вводе в браузере адреса http://example.ru http запросы редиректились на 1 виртуалку IP=192.168.1.1, а при вводе http://example.ru/mail или http://mail.example.ru http запросы редиректились на виртуалку 2 IP=192.168.1.2.
Возможно ли такое настроить с помощью nginx, если да, то подкиньте пример конфига, если нет, то с помощью каких инструментов такое можно реализовать. Заранее благодарю за ответы.
Задача: как настроить nginx, что бы при вводе в браузере адреса http://example.ru http запросы редиректились на 1 виртуалку IP=192.168.1.1, а при вводе http://example.ru/mail или http://mail.example.ru http запросы редиректились на виртуалку 2 IP=192.168.1.2.
Возможно ли такое настроить с помощью nginx, если да, то подкиньте пример конфига, если нет, то с помощью каких инструментов такое можно реализовать. Заранее благодарю за ответы.
Последний раз редактировалось f_andrey 2015-08-06 15:09:55, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
nginx как прокси для нескольких веб серверов
да, proxy_path
-
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2014-09-05 12:59:16
nginx как прокси для нескольких веб серверов
начал разбираться с proxy_path. Вот такой конфиг:
но чего-то не хватает, потому, что при переходе по адресу http://example.ru/main картинки с веб морды не подгружаются, при переходе по адресу http://example.ru/mail при авторизации через веб морду для почтового сервера выдается ошибка.
Код: Выделить всё
location /main/ {
proxy_pass http://192.168.1.1:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.php;
rewrite 192.168.1.1 example.ru;
}
location /mail/ {
proxy_pass http://192.168.1.2:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.php;
rewrite 192.168.1.2 example.ru;
}
-
- рядовой
- Сообщения: 44
- Зарегистрирован: 2009-10-15 23:01:33
nginx как прокси для нескольких веб серверов
Апстрим вроде забыл
upstream 192.168.1.2 {
server сервер_куда_апстримишь;
}
server {
listen 80;
server_name 192.168.1.2;
root /dev/null;
upstream 192.168.1.2 {
server сервер_куда_апстримишь;
}
server {
listen 80;
server_name 192.168.1.2;
root /dev/null;
-
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2014-09-05 12:59:16
nginx как прокси для нескольких веб серверов
С upstream конфиг стал еще проще:
на веб морде http://example.ru/mail авторизация проходит нормально, все работает, а вот картинки с основного сайта http://example.ru/main по прежнему не подгружаются.
Код: Выделить всё
upstream main {
server 192.168.1.1;
}
upstream mail {
server 192.168.1.2;
}
server {
listen 80;
server_name example.ru;
root /var/www/html;
index index.nginx-debian.html;
location / {
root /var/www/html;
}
location /main/ {
proxy_pass http://main/;
}
location /mail/ {
proxy_pass http://mail/;
}
}
- Amadeus
- ст. сержант
- Сообщения: 332
- Зарегистрирован: 2008-10-05 12:42:44
- Откуда: Kiev
nginx как прокси для нескольких веб серверов
Эх..)
1) Upstream можно использовать для подобного вида запросов, но это все равно что апач из rc.local методом
Загружать. 
2) Самый простой пример, proxy_parth, который будет отдавать нормально два сайта на разных урлах
3) Картинки не загружаются у Вас, потому что
Т.е для начала посмотрите, какой линк на картинку полный в GET запросе
1) Upstream можно использовать для подобного вида запросов, но это все равно что апач из rc.local методом
Код: Выделить всё
/usr/local/bin/apachectl start

2) Самый простой пример, proxy_parth, который будет отдавать нормально два сайта на разных урлах
Код: Выделить всё
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://10.21.0.5:80;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_send_lowat 12000;
index index.php index.html index.htm;
}
location /test1 {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://10.21.0.1:80;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_send_lowat 12000;
index index.php index.html index.htm;
}
}
Код: Выделить всё
location /test1
Нет ничего невозможного
-
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2014-09-05 12:59:16
nginx как прокси для нескольких веб серверов
да у картинок url http://example.ru/images/news/cg_3.JPG, а должен быть, что бы все работало http://example.ru/main/images/news/cg_3.JPG
- Amadeus
- ст. сержант
- Сообщения: 332
- Зарегистрирован: 2008-10-05 12:42:44
- Откуда: Kiev
nginx как прокси для нескольких веб серверов
Ну вот, исправьте это, и будем все хорошо.
А насчет upstream - почитайте, документацию - его используют в полной мере для балансировки между хостами. Никто не говорит что так нельзя, но это как микроскопом забивать гвозди. что ли. Это ИМХО.
А насчет upstream - почитайте, документацию - его используют в полной мере для балансировки между хостами. Никто не говорит что так нельзя, но это как микроскопом забивать гвозди. что ли. Это ИМХО.
Нет ничего невозможного
-
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2014-09-05 12:59:16
nginx как прокси для нескольких веб серверов
Amadeus, я попробовал Ваш пример, с ним перестает работать веб морда почтовика, выдаёт ошибку соединения с сервером.