Коллеги, совсем не моя тема. Гуглил, гуглил - такие простые случаи не рассматриваются.Итак: есть клиенты. У них, как и положено, стоит какая-то древнючая ISA.
Снаружи проброшен порт 8000 на nginx, который стоит в DMZ.
За ним - еще два сервера.
Задача такая:
при обращении по имени serverA.kontora.com - nginx перебрасывает трафик со своего порта 8000 на сервер A порт 8080.
при обращении по имени serverB.kontora.com - nginx перебрасывает трафик со своего порта 8000 на сервер B порт 8090.Я уже даже почти пробросил, но почему-то URL serverA.kontora.com при попытке проброса меняется на nginx.kontora.com и отбрасывается порт 8000.
80-й порт задействовать нет возможности - он занят.
ISA.kontora.com, nginx.kontora.com, serverA.kontora.com, serverB.kontora.com - все прописаны в DNS как А записи.
Помогите с конфигом, пожалуйста!
> при обращении по имени serverA.kontora.com - nginx перебрасывает трафик со своего порта
> 8000 на сервер A порт 8080.
> при обращении по имени serverB.kontora.com - nginx перебрасывает трафик со своего порта
> 8000 на сервер B порт 8090.Это ужасТно. Для счастливой и безболезненной работы рекомендую, чтобы порты были везде одинаковыми (8000 в вашем случае).
> Я уже даже почти пробросил, но почему-то URL serverA.kontora.com при попытке проброса
> меняется на nginx.kontora.com и отбрасывается порт 8000.1) Для безболезненной работы рекомендую, чтобы порты были везде одинаковыми (8000 в вашем случае).
2) Админам в работе очень помогают логи. Обычно. Иногда. Админам.
3) Сайт на ISA-сервере А должен откликаться на имя serverA.kontora.com. Несмотря на то, что доменная запись serverA.kontora.com будет смотреть в какое-то другое место.
3.1) Сервер Б - аналогично.
3.2) Конфиг nginx должен быть правильным.> Помогите с конфигом, пожалуйста!
Правильный вопрос содержит половину ответа. Насколько ваш вопрос содержит эту половину ответа, настолько я вам и ответил.
>Коллеги, совсем не моя тема. Гуглил, гуглил - такие простые случаи не рассматриваются.Рассматриваются всякие случаи, и даже такие простые. Просто видимо совсем "не моя тема" и не понятно, что спрашивать. Уже даже и не говорю о том, что можно посмотреть в HTTP-заголовки tcpdump-ом.... Пока еще можно.
>[оверквотинг удален]
> то, что доменная запись serverA.kontora.com будет смотреть в какое-то другое место.
> 3.1) Сервер Б - аналогично.
> 3.2) Конфиг nginx должен быть правильным.
>> Помогите с конфигом, пожалуйста!
> Правильный вопрос содержит половину ответа. Насколько ваш вопрос содержит эту половину
> ответа, настолько я вам и ответил.
>>Коллеги, совсем не моя тема. Гуглил, гуглил - такие простые случаи не рассматриваются.
> Рассматриваются всякие случаи, и даже такие простые. Просто видимо совсем "не моя
> тема" и не понятно, что спрашивать. Уже даже и не говорю
> о том, что можно посмотреть в HTTP-заголовки tcpdump-ом.... Пока еще можно.Ваш сарказм понимаю и принимаю. Просто вот такой там админ. А я уже лет 10 как отошел от этого - все больше бумажки, совещания, планирования, бюджет и прочая ерунда.
Нашел мануалы, читаю. Порты, да, согласен - сделаю везде 8000.
Просто там много уже накосячить тот админ успел.
Акционеры понимают, кивают, соглашаются, но..
"Ты ж у нас гений - ты справишься!" (((
Несмотря на комменты выше, никакой разницы нет в том, где и какие порты на back-end'ах. В Вашем случае, скорее всего, надо смотреть .htaccess на машине "А". Видимо, там rewrite.Это не простой случай, а банальнейший: работа с доменами 3его уровня. Тут даже не надо URL проверять. Всего лишь прописывайте server_name.
server {
listen 80;
server_name serverA.kontora.com;location / {
proxy_pass http://A:8080;
...
}
}server {
listen 80;
server_name serverB.kontora.com;location / {
proxy_pass http://B:8090;
...
}
}server { ... }
> Несмотря на комменты выше, никакой разницы нет в том, где и какие
> порты на back-end'ах.Несмотря на коммент выше, разница есть.
В частном случае наличие или отсутствие разницы зависит от настройки и поведения бэкенда.
Бэкенд берет и видит, что он живет на порту 8090. Исходя из этого генерит контент.
В котором могут быть ссылки с портом. В частном случае - с портом 8090. А доступны они должны быть по порту 8080.Резюмирую: разница есть, и совпадение порта бэкенда и порта фронтенда решает некоторое количество проблем. Серых и локальных 127/8 IP-адресов хватит всем.
> Бэкенд берет и видит, что он живет на порту 8090. Исходя из
> этого генерит контент.
> В котором могут быть ссылки с портом. В частном случае - с
> портом 8090. А доступны они должны быть по порту 8080.шта? О_о что он берет? бэк-энд что-то там особенное генерит в зависимости от чего? То есть сервер "А" на порту 8080 - это нечно совсем-совсем не то, что на порту 8090? Отличается поведение, повадки, свойства...??? Какой вообще смысл могла нести Ваша фраза???
В частном, особенном (или печальном) случае, есть proxy_redirect или proxy_set_header Host $host:$server_port;
> Это не простой случай, а банальнейший: работа с доменами 3его уровня.Несмотря на коммент выше, никакой разницы в том, какого уровня домен - второго, третьего или четвертого - нет.