Страница 1 из 1
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-06 14:51:00
Northward
Исходные данные: есть домен 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 как прокси для нескольких веб серверов
Добавлено: 2015-08-07 14:26:52
skeletor
да, proxy_path
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 14:57:07
Northward
начал разбираться с proxy_path. Вот такой конфиг:
Код: Выделить всё
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;
}
но чего-то не хватает, потому, что при переходе по адресу
http://example.ru/main картинки с веб морды не подгружаются, при переходе по адресу
http://example.ru/mail при авторизации через веб морду для почтового сервера выдается ошибка.
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 15:03:39
outlander
Апстрим вроде забыл
upstream 192.168.1.2 {
server сервер_куда_апстримишь;
}
server {
listen 80;
server_name 192.168.1.2;
root /dev/null;
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 15:38:36
Northward
С upstream конфиг стал еще проще:
Код: Выделить всё
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/;
}
}
на веб морде
http://example.ru/mail авторизация проходит нормально, все работает, а вот картинки с основного сайта
http://example.ru/main по прежнему не подгружаются.
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 15:50:37
Amadeus
Эх..)
1) Upstream можно использовать для подобного вида запросов, но это все равно что апач из rc.local методом
Загружать.
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;
}
}
3) Картинки не загружаются у Вас, потому что
Т.е для начала посмотрите, какой линк на картинку полный в GET запросе
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 16:06:02
Northward
да у картинок url
http://example.ru/images/news/cg_3.JPG, а должен быть, что бы все работало
http://example.ru/main/images/news/cg_3.JPG
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 16:10:57
Amadeus
Ну вот, исправьте это, и будем все хорошо.
А насчет upstream - почитайте, документацию - его используют в полной мере для балансировки между хостами. Никто не говорит что так нельзя, но это как микроскопом забивать гвозди. что ли. Это ИМХО.
nginx как прокси для нескольких веб серверов
Добавлено: 2015-08-07 16:32:52
Northward
Amadeus, я попробовал Ваш пример, с ним перестает работать веб морда почтовика, выдаёт ошибку соединения с сервером.