Понедельник, 20 Июль 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.
Комментарии
Спасибо, а для апача в виртуальных хостах надо что-то заводить? если пользователь vasya имеет 2 домена, то мне надо в апаче завести два виртуалхоста с documentroot в две разные папки?
Форма комментирования для «nginx примеры конфигов: типичный хостинг»
На самом деле подойдет обычный, массовый virtual hosting
т.е конфиг получается общий для всех юзеров\доменов. А если кому-то надо свои локейшены или реврайты описать, где их писать? Можно сделать еще один map, с именем юзера, чтобы при его наличии он тоже инклюдился если он присутствует? типа когда идет обращение к .porno.ru , то инклюдится ivan.conf ?
p.s. кнопка “комменировать” не работает
Да. Это пример конфига для массового хостинга.