Мультидоменный веб-сервер на Nginx

nginx-virtual-host

Однажды мне понадоблось организовать мультидоменный веб-сервер на Nginx. Сервер в то время у меня был на CentOS 6.5, поэтому недолго погуглив, я нашел решение. Немного подредактировав конфиг, я получил то, что хотел.

Однако, позже, когда я сравнил производительность CentOS и FreeBSD и решил окончательно перейти на FreeBSD, оказалось конфиг от Linux уже не подходил к UNIX. И стала задача по заточке конфига конкретно под FreeBSD. В случае с ней, достаточно было только одного nginx.conf. Делюсь готовым решением.

user www;
worker_processes  4;
error_log  /var/log/nginx/error.log  info;

events {
    worker_connections  1024;
}

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

    sendfile        on;
    keepalive_timeout  65;
    gzip  on;

    server {

listen 80 default;
    server_name _;

    set $sathost $host;
    if ( $host ~ ^(www\.)?(.+)$ ) {
        set $sathost $2;
    }
    root   /usr/local/www/$sathost;
    index index.php index.html index.htm;
	# access_log /var/log/nginx/all/$sathost_access.log; (к сожалению, так пока не работает)
    location / {
                if (!-d /usr/local/www/$sathost) {
        set $sathost undefined;
        rewrite ^ /index.php last;
                }

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

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

    location ~ \.php$ {
        root   /usr/local/www/$sathost;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/local/www/$sathost/$fastcgi_script_name;
        include fastcgi_params;
        break;
    }

    location ~ \.htm(l?)$ {

        fastcgi_param  SCRIPT_FILENAME  /usr/local/www/$sathost/$fastcgi_script_name;
        include fastcgi_params;
        if (!-f $request_filename) {
             rewrite  ^ /index.php  last;
        }
        if (-f /usr/local/www/$sathost/.parse_html) {
            fastcgi_pass   127.0.0.1:9000;
        }
        break;
    }
    location ~ /\.ht {
        deny  all;
    }
	}
}


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

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

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

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

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