Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Ubuntu - Nginx виртуальные хосты, часть 2  (Прочитано 4021 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Ubuntu - Nginx виртуальные хосты, часть 2
« : 13 Октября 2009, 14:47:49 »
В предыдущей статье Ubuntu - Nginx виртуальные хосты, часть 1 введены основы создания виртуальных хостов.

Это позволило нам обслуживать несколько доменов с одного IP адреса и слайсы. Теперь мы подробно рассмотрим более детальные настройки файлов виртуальных хостов.

Listen

server {
    listen   80;
}

Внутри серверного модуля параметр 'listen', определяет порт для виртуального хоста.
Два наиболее распространенных порта, должны быть 80 (стандартный порт HTTP) и 443 (стандартный порт HTTPS) порты.

Конечно, вы можете добавить любой порт. Например, вы можете протестировать сайт на порту 8080.

server_name

Обычный порядок виртуального хост-файла означает следующая строка 'server_name'. Таким образом, в начале Vhost модуль сервера, как правило, выглядит следующим образом:

server {
    listen   80;
    server_name domain1.com;
}

Вы также можете добавить простые правила перезаписи здесь, чтобы направлять пользователей от www.domain1.com к domain1.com:

server {
  listen   80;
  server_name  www.domain1.com;
  rewrite ^/(.*) http://domain1.com/$1 permanent;
}

alias

location  /img/ {
        alias  /home/public_html/domain.com/images/;
}

Устанавливает местонахождение alias.

В этом случае адрес '/img/dog.png' вернет файл, расположенный по адресу:

/home/public_html/domain.com/images/dog.png
Это можно сделать для того чтобы убрать image/url файл и означает, что можно 'share' (расшарить) каталог изображений с другим сайтом, на тот же слайс.

root

Исходя из аналогичных настроек 'alias', где вы можете установить 'root' от положения (location):

location  /img/ {
        root /home/public_html/domain.com;
}

На этот раз, по запросу '/img/dog.png' вернет файл, расположенный по адресу:

/home/public_html/domain.com/img/dog.png
Это  тонкая, но принципиальная разница между настройками 'alias' и 'root'.

error_page

error_page    404    /error/404.html;
Устанавливает место для обычной страницы с ошибкой.  В этом примере, папка 'error' находится в  'public' директории, где я розместил обычные страницы с ошибками. Вы можете перенаправить несколько типов ошибок в один файл, как здесь:

error_page    502 503 504    /error/50x.html;
internal

Основываясь на настройку страницы с ошибкой,  это возможно, чтобы пользователь гарантированно получил, только страницу с ошибкой как фактическую ошибку.
Иными словами, на данный момент, пользователь может ввести URL:

http://domain.com/error/50x.html
и будет отображен 50x.html файл.

Не очень хорошо, особенно если файл содержит ошибки переменных, которые могут помочь пользователю разобратся, почему же они получают ошибки (например, предыдущую страницу, IP-адрес, и т.д.).

Мы можем установить 'internal' метки для обеспечения конкретных страниц, которые будут обслуживаться только с внутреннего триггера, а не из внешнего URL запроса.

Давайте рассмотрим пример, который будет включать в себя, свыше 50x страницы с ошибкой:

error_page    502 503 504    /error/50x.html;

location    /error/50x.html {
    internal;
}

Это будет гарантировать, что /error/50x.html файл только сработает и обслужится через внутреннюю ошибку.

Теперь перейдём к:

http://domain.com/error/50x.html
Вы бы получили ошибку 404 (файл не найден), вместо прямого доступа к файлу 50x.html.
Намного лучше.

Вы также можете это настроить для 404.html страницы, но в этом нету особого смысла если бы это сделали, откроется та же 404 страница!

Выводы

Nginx содержит много настроек виртуального хоста и очень доступный для использования.


PS: перевод с английского. Если вы найдёте ошибки в переводе, сообщите об этом пожалуйста.
Источник
« Последнее редактирование: 13 Октября 2009, 14:51:24 от Baggio »
Мой сайт http://linux-bsd.pp.ua

Оффлайн lone_wolf

  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Ubuntu - Nginx виртуальные хосты, часть 2
« Ответ #1 : 14 Декабря 2009, 03:41:57 »
Здравствуйте, у меня к вам такой вопрос, я вот поставил nginx из исходников вот а теперь решил сделать так чтоб файл вирт хостов хранился отдельной папочке ну для удобства управления... что мне нужно прописать в конфиге и может где то есчё чтоб это заработало ?

ну в конфиге прописывал include /usr/local/nginx/sites-enabled/*; ну естествено создал директорию закинул туда фал вирт хоста ну сделал симлинк.. перезагрузил на всякий случай nginx , он перезапустился без проблем вот но при тесте в браузере показывает что не находит мой серв... не знаю что и делать...

Оффлайн Baggio

  • Автор темы
  • Любитель
  • *
  • Сообщений: 70
  • Телепад
    • Просмотр профиля
    • Linux & FreeBSD
Re: Ubuntu - Nginx виртуальные хосты, часть 2
« Ответ #2 : 17 Декабря 2009, 16:53:04 »
А вообще, вот что вычитал в документации у Сысоева:

Начиная с 0.8.25, именованные выделения в регулярном выражении создают переменные, которые могут затем использоваться в других директивах:
server {
    server_name   ~^(www\.)?(?<domain>.+)$;

    location / {
        root  /sites/$domain;
    }
}

server {
    server_name   _;

    location / {
        root  /sites/default;
    }
}

http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server_name

На таком конфиге нужно указать где находится папка с виртуальными хостами, и они автоматически будут работать. То есть уже не нужно вписывать каждый хост вручную, достаточно последней версии nginx и конфиг который я кинул выше.
« Последнее редактирование: 17 Декабря 2009, 16:56:43 от Baggio »
Мой сайт http://linux-bsd.pp.ua

Оффлайн lv

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Ubuntu - Nginx виртуальные хосты, часть 2
« Ответ #3 : 26 Октября 2010, 20:10:50 »
Все сделал как написанно в статье, только почему-то вместо index.html nginx выдает конфиг php...
С чем бы это могло быть связанно?

 

Страница сгенерирована за 0.054 секунд. Запросов: 25.