ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: непонятка с IP адресами



On 12.06.2011 11:56, ssbury wrote:

Все запросы к www.domain1.ru обрабатываются nginx
в сервере-по-умолчанию, а в не в том сервере,
где указано только server_name domain1.ru;

Соответственно и всю статику nginx будет искать
не в /srv/domain1.ru а в каталоге /srv/domain0.ru

Я понял принцип работы о которым Вы мне
рассказали. Но не могу понять как это
можно исправить. Подскажите пожалуйста
как правильно надо исправить мой
конфиг чтобы исправить такую ошибку. У
меня просто нулевой опыт работы с nginx.

Скорее всего, без чтения документации
у Вас не получится настроить nginx.

http://nginx.org/en/docs/
http://sysoev.ru/nginx/docs/

В частности, "How nginx processes a request"
и "Server names" где есть ответ на Ваш вопрос.

Если есть такая возможность, лучше httpd
оставлять на 80 порту:

Listen 127.0.0.1:80
NameVirtualHost *
<VirtualHost *>

так будет меньше проблем из-за
различных портов у nginx и apache.

К сожалению, насколько я правильно
понимаю, у меня такой возможности нет.
Так как должно быть обращение клиентов
в браузерах в виде www.domain1.ru, без
указания порта, а насколько я понимаю
это только возможно когда nginx
представлен на 80 порту, и насколько я
правильно понимаю одновременно не
могут находится на одном порту и nginx и
apache. Я правильно понимаю?

apache и nginx могут использовать тот же 80 порт,
если они будут его слушать на разных интерфейсах.

apache будет Listen 127.0.0.1:80
а nginx будет listen 11.22.33.44:80;
где 11.22.33.44 - это внешний IP сервера.

Большое количество примеров в интернете,
где nginx случает 80 порт, а apache слушает
8080 порт вызваны ограничениями операционной
системы FreeBSD при использовании jails.

Операционная система Linux этих ограничений
не имеет и поэтому в Linux связку nginx <-> apache
можно настроить способом, который будет вызывать меньше проблем.

Например, некоторые скрипты на php видят что запрос к ним пришёл
на порт 8080 и формируют url сайта с явным указанием порта 8080.
Если и apache и nginx будут работать на 80 порту - этой проблемы
не будет и везде будет нормальный url.

Никаких преимуществ указывать Listen 127.0.0.1:8080 в конфиге апача
вместо директивы Listen 127.0.0.1:80 нет, это только дополнительный
потенциальный источник проблем и глюков в работе через nginx+apache

proxy_pass http://127.0.0.1:8080;

в редких и сперцифических случаях uri необходимо
передавать на backend в необработанном виде.

более безопасный и надежный вариант:
proxy_pass http://127.0.0.1/;

А как тут правильно передать в
необработанном виде если порт все таки
8080?

Ответ на этот Ваш вопрос есть в документации
к директиве proxy_pass на сайте http://sysoev.ru/
Пересказывать документацию - это занятие неблагодарное.

Заранее спасибо,
Александр

P.S. Почему получаются редиректы на цифровой IP адрес
вместо имени сайта - точно установить причину Вы сможете
быстрее всего с помощью отладочных логов nginx и apache.

--
Best regards,
 Gena


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.