Мультидоменный веб-сервер на nginx (Debian)

Nginx  – замечательная вещь. Намного больше возможностей можно получить, подняв на нем мультидоменный веб-сервер. Необходимость такая: при обращению к доменному имени, мы попадаем на сервер с nginx, а nginx читает имя домена, к которому мы обратились и посылает нас в одноименную директорию /www/имя_домена. Если домен неизвестен – нас посылают в директорию /www/undefined/

Получился такой код:

user nginx;
worker_processes 4;
worker_priority -5;
worker_rlimit_nofile 51200;
error_log /var/log/nginx/error.log crit;

events {
worker_connections 2000;
multi_accept on;
}

http {
include mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;

# Caches information about open FDs, freqently accessed files.
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
keepalive_requests 1000;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "msie6";

server {

listen 80 default;
server_name _;

set $sathost $host;
if ( $host ~ ^(www\.)?(.+)$ ) {
set $sathost $2;
}
root /www/$sathost;
index index.php index.html index.htm;
location / {
if (!-d /www/$sathost) {
set $sathost undefined;
rewrite ^ /index.php last;
}

set $rflag 1;
if (-e $request_filename) {
set $rflag 0;
}
if (!-f /www/$sathost/index.php) {
set $rflag 0;
}
if ($rflag = 1) {
rewrite ^ /index.php last;
}

if (-f $request_filename) {
expires 1h;
break;
}
}

location ~ \.php$ {
root /www/$sathost;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$sathost/$fastcgi_script_name;
include fastcgi_params;
break;
}

location ~ \.htm(l?)$ {

fastcgi_param SCRIPT_FILENAME /www/$sathost/$fastcgi_script_name;
include fastcgi_params;
if (!-f $request_filename) {
rewrite ^ /index.php last;
}
if (-f /www/$sathost/.parse_html) {
fastcgi_pass unix:/var/run/php-fpm.sock;
}
break;
}
location ~ /\.ht {
deny all;
}
}
}

Конечно, его можно значительно уменьшить, убрав ненужные параметры. Но мне он нужен был именно в таком виде.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!