Re: непонятки с конфигурацией nginx...

Sergey Shepelev temotor at gmail.com
Sun Jun 7 14:08:18 MSD 2009


2009/6/7 azlk <azlk at puppyrus.org>:
> Сервер Ubuntu 8.04.2, я собрал nginx 0.7.59 с такими опциями:
>
> configure arguments: --prefix=/usr --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --with-http_ssl_module --with-http_addition_module --with-http_sub_module --with-http_gzip_static_module --with-http_perl_module --with-pcre --with-md5-asm --with-sha1-asm --with-sha1=/usr/lib/perl5/auto/Digest/SHA1/SHA1.so --with-poll_module --http-log-path=/var/log/nginx/nginx.access.log --pid-path=/var/run/nginx.pid --with-cpu-opt=opteron
>
> Все html (или php) файлы хочу положить в /var/www, для этого в настройках сайтов прописал вот это:
>
> server {
>        listen  80;
>        server_name  траляля.info;
>        access_log  /var/log/nginx/default.access.log;
>        location  /var/www/nginx-default {
>                root /var/www/nginx-default;
>                index  index.php index.html;
>        }
>
> другой сайт (вернее, другая страница на том же сайте):
> server {
>        listen  80;
>        server_name  www.траляля.info;
>        access_log  /var/log/nginx/dao.access.log;
>        location  /var/www/dao {
>                root /var/www/dao/;
>                index  index.php index.html;
>        }
>
> и наконец, пытался rtorrent пустить через https:
>
> server {
>    listen 443;
>    keepalive_timeout 75;
>    access_log  /var/log/nginx/rtorrent.access.log;
>    location = /var/www/rt {
>                root /var/www/rt;
>                index  index.html;
>        }
> (тут лежат файлы веб-морды для rtorrent)
>
> Как только не пытался обращаться к этим страницам: траляля.info, www.траляля.info, траляля.info/rt, траляля.info/dao - в ответ я получаю то одно, то другое - то 403 Forbidden, то (https) "Ваш web сервер не поддерживает PHP."
> СтоИт PHP 5.2.4-2ubuntu5.5 with Suhosin-Patch 0.9.6.2 (cgi-fcgi)? fast-cgi из пакета lighttpd.
> Случайно (!) в логе нашел, что, оказывается, не находится страница,
> которую веб-сервер ищет по адресу /usr/html. У меня такого каталога
> даже нет! Создал каталог, положил туда страницы - начало показывать хоть
> что-то...
> У меня несколько вопросов:
> 1.Возможно, для всех вас это всё очевидно, а для меня, который первый
> раз в жизни столкнулся с настройкой веб-сервера nginx, это совсем не
> так.
> Например: где можно хоть что-то узнать о таких параметрах
> конфигурации nginx, как
> --with-http_addition_module
> --with-http_sub_module
> --with-poll_module
> Что это за модули вообще?? Про них нигде ничего не написано - как же
> можно новичку понять, нужны они или нет, если я про них даже прочитать
> не могу нигде???..

http://sysoev.ru/nginx/docs/http/ngx_http_addition_module.html
http://sysoev.ru/nginx/docs/http/ngx_http_sub_module.html

http://sysoev.ru/nginx/docs/events.html
select, poll, epoll, kqueue это низкоуровневые методы получения
асинхронных событий от ОС.
Вам не нужно об этом беспокоиться, configure автоматически найдёт доступные.

http://sysoev.ru/nginx/docs/install.html
Здесь вообще все опции configure описаны. Что же вы нагло врёте, мол,
нигде ничего не написано? "Не написано" и "я не нашёл" - разные вещи.
Если б вы написали в рассылку простую просьбу разъяснить опции
configure, сохранили бы честь и лицо. А сейчас перечитайте своё
сообщение. Стыд.

Как понять новичку - отличное правило - если ты не знаешь что это,
значит это тебе не нужно. Или, по крайней мере, уж точно тебе не нужно
это трогать.

> 2. Откуда и зачем мне по умолчанию впихнули путь /usr/html? Я нигде
> этого не просил, мне ТАК не удобно, а на параметры в конфигурации сайта
> он чихает, как будто их нет (root /var/www/nginx-default). Нет, я,
> конечно, погуглил, посмотрел Makefile  и уже понял, что можно взять и
> тупо статически прописать это там. Но разве это нормально и/или удобно?
> В следующий раз, мне надо снова будет всё то же самое руками
> прописывать?... Почему при ./configure .....[options] я не могу задать
> путь корня www? Сколько я собирал программ, PREFIX относится к
> бинарнику, библиотекам и пр., а настройки работы самой программы должны
> находиться в конфигурационном файле и она (программа) на них как-то
> должна реагировать, разве не так? У меня nginx не реагирует :-(

root можно задать в конфиге. Почему вас волнует сборка в этом вопросе?
В любой программе (в том числе в понятных вам апаче и лайти) есть
десятки-сотни настроек, которые имеют какое-то значение по-умолчанию.
Вот root имеет значение по-умолчанию /usr/html или какой-то еще. Это
не важно. Вместо того, чтобы тратить своё время на жалобы о дефолтных
настройках, просто напишите в конфиге root какой вам надо.

> 3. Даже когда nginx начал что-то показывать - я не могу понять его
> логику: он то показывает файлы из /usr/html, то вдруг начинает казать
> из /var/www/.. Наверное, должно пройти несколько лет, чтобы обычный
> человек, не искушённый в настройках nginx, смог все-таки заставить её
> работать так, как ему надо?....

Вы первый за несколько лет, у кого такие большие проблемы с настройкой
nginx. Задумайтесь над этим.

> Создаётся такое ощущение, что вокруг nginx существует какой-то заговор:
> все всё знают и поэтому об этом не говорят :-0 Может быть я чего-то не
> знаю? Сайт Игоря Сысоева внимательно читал, а также кучу конференций по
> этому поводу. У меня, простите, создалось впечатление, что у nginx
> какая-то невнятная логика работы (я сейчас говорю только про
> конфигурацию и размещение фалов). Почему у такой замечательной
> программы, которая уже тащит около 4% сайтов, как пишут, нет НОРМАЛЬНОЙ
> документации? Это, что, такая непосильная работа??? Документации, взяв
> в руки которую, любой новичок сможет собрать демон, настроить и
> запустить его, при этом ПОНИМАЯ, что происходит!.... Там чуть ли не по
> каждому пункту вопросы, на которые нет ответов...

В документации вопросы?
Задавайте свои конкретные вопросы здесь в рассылке. Люди охотно
отвечают и помогают решать проблемы.

> Про https/SSL я даже
> боюсь спрашивать - все тут обсуждают такие дебри, в которые я даже еще
> не лез, а мне хотелось попробовать запустить для начала хотя бы
> rtorrent, чтобы не весь мир управлял им, а только несколько человек.
> Так я не могу найти НИГДЕ толкового описания - КАК сделать так, чтобы
> nginx пускал меня по https, спрашивая логин-пароль.... Apache, lighhtpd
> - пожалуйста, а nginx - тишина...

Возможно, в документации nginx не хватает нескольких примеров
достижения простых целей. Возможно, это потому что всё понятно.

Хотя, вот, есть примеры. Согласен, что примеров мало.
http://sysoev.ru/nginx/docs/virtual_hosts.html
http://sysoev.ru/nginx/docs/example.html

> Простите, уважаемые гуру веб-серверов, интернет-контента и прочая и
> прочая, если я задел вас за живое, но вынужден констатировать, что
> существующая документация на nginx абсолютно невнятна, в ней местами
> отсутствуют даже намёки на многие неизвестные новичкам вещи, и потому
> непригодна для тех, кто первый раз берётся за настройку веб-серверов, в
> частности nginx. Чтобы не заниматься просто критикой, я предлагаю свою
> помощь в создании внятной и взаимоувязанной документации ХОТЯ БЫ на
> основные моменты, чтобы каждый желающий мог начать работать с программой
> (конфигурирование, установка, каталоги для размещения фалов, связка с
> cgi). Я очень плохо (пока) разбираюсь в основах работы веб-серверов,
> раздачи контента через интернет, не знаю regexp-ы, и т.д. - но
> некоторые познания в линуксе у меня все-таки уже есть, и самое главное,
> я могу писать понятные и разжеванные документы, так, чтобы каждый пень,
> типа меня, смог их понять и применить. Я думаю, что отсутствие толковой
> (а порой - хоть какой-либо) документации и сдерживает популярность
> nginx. Ведь именно об этом пишут на всех форумах, особенно,
> англоязычных.
>
>

Документация nginx не ставит целью обучение начинающих сисадминов.
Вообще, у меня сложилось впечатление, что у Игоря нет цели сделать
nginx единственным вебсервером планеты. Кому-то непонятно, это
сдерживает популярность. И что?

Документация nginx выполнена в стиле reference, то есть описывает
каждый конфигурационный параметр в отдельности. И с этой задачей
документация справляется полностью. Да, это пол дела - знать
директивы, нужно уметь ими пользоваться. Как-то так сложилось, что
людям удобно спросить в рассылке что-то вроде, как мне раздавать файлы
из /var/www/dao на хосте www.траляля.info? Вам ответят:

server {
  listen 80;
  server_name www.траляля.info;
  root /var/www/dao;
  index index.html;
}

А ваша конфигурация

> server {
>        listen  80;
>        server_name  траляля.info;
>        access_log  /var/log/nginx/default.access.log;
>        location  /var/www/nginx-default {
>                root /var/www/nginx-default;
>                index  index.php index.html;
>        }

раздаёт файлы из /var/www/nginx-default на URL
http://траляля.info/var/www/nginx-default. Другими словами, не надо в
location повторять root. Вы перепутали root и alias.


More information about the nginx-ru mailing list