Monday, 20 July 2009

nginx примеры конфигов: типичный хостинг

Сегодня мы посмотрим на типичный конфиг для хостинга.

У нас есть несколько ip адресов, в том числе клиент с ssl (домен super.ru) у которого есть личный ip адрес (1.2.3.4). За nginx стоит apache. Задача nginx отдавать статические файлы.

Конфиг nginx выглядит так:

http {

    map $http_host $user {
        hostnames;
        default "igor;

        include users.list;
    }

    map $http_host $domain {
        hostnames;
        default "hosting.ru";

        include domains.list;
    }

    server {
        listen 80 default;

        server_name  hosting.ru

        include vhost.conf;

    }

    server {
        listen 1.2.3.4:443;

        server_name  super.ru;

        ssl  on;

        ssl_certificate      super.ru.cert.pem;
        ssl_certificate_key  super.ru.key.pem;

        ssl_session_timeout  5m;

        ssl_protocols  SSLv3 TLSv1;
        ssl_ciphers    ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:-SSLv2:+SSLv3:+EXP;

        ssl_prefer_server_ciphers   on;

        include vhost.conf;
    }
}

vhost.conf:

location ~* ^/.+\.(ico|gif|png|jpg|avi|js|css)$ {
    root  /home/$user/domains/$domain/htdocs;
}

location / {
    root  /home/$user/domains/$domain/htdocs;

    proxy_redirect       off;
    proxy_set_header     Host $new_host;
    proxy_set_header     X-Real-IP $remote_addr;
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass           http://127.0.0.1:80;
}

location ~ /\.ht {
    return 403;
}

users.list:

.motto.ru    fedya;
.auto.ru     fedya
.porno.ru    ivan;
.super.ru    lena;

domains.list:

.mottor.ru   auto.ru;
.auto.ru     auto.ru;
.porno.ru    porno.ru;
.super.ru    super.ru;

Что дает такая схема? Добавление нового домена (для nginx) сводится к созданию пользователя (если надо) и создания у него домена и дописывания информации в два файла users.list и domains.list, вместо создания очень большого количества конфигов. И все клиенты для apache будут виртуальными, весь ssl настраивается на уровне nginx.

Write on: 16:30 | 4 comments | | tags: , , , , | permalink |
Add post to:   Delicious Reddit Slashdot Digg Technorati Google


Add comment

Pingbacks

Nginx, установка, настройка, примеры использования. « Записки бОяниста @centos.alt.ru 26.08.2009 12:20
Полезные ссылки Введение в nginx, часть 1 Введение в nginx, часть 2: Другие возможности nginx примеры конфигов: типичный хостинг nginx примеры конфигов: редирект в зависимости от домена

Comments

lj 26.11.2009 8:02

Спасибо, а для апача в виртуальных хостах надо что-то заводить? если пользователь vasya имеет 2 домена, то мне надо в апаче завести два виртуалхоста с documentroot в две разные папки?

reply
Kirill A. Korinskiy 28.11.2009 10:20

На самом деле подойдет обычный, массовый virtual hosting

reply

Comment form for «nginx примеры конфигов: типичный хостинг»

Required. 30 chars of fewer.

Required.

lj 6.01.2010 12:01

т.е конфиг получается общий для всех юзеров\доменов. А если кому-то надо свои локейшены или реврайты описать, где их писать? Можно сделать еще один map, с именем юзера, чтобы при его наличии он тоже инклюдился если он присутствует? типа когда идет обращение к .porno.ru , то инклюдится ivan.conf ?

p.s. кнопка “комменировать” не работает

reply
Kirill A. Korinskiy 7.01.2010 15:43

Да. Это пример конфига для массового хостинга.

reply