UCS - коллекция мануалов

Практика - критерий истины...

Инструменты пользователя

Инструменты сайта


linux:nginx_vhost

Примеры виртуальных хостов Nginx для разных CMS

Многие люди наверняка сталкиваются с поиском рабочих конфигураций виртуальных хостов Nginx для различных CMS. Несмотря на свою популярность рабочие конфиги для этого web-сервера иной раз приходится долго и упорно искать или подбирать самому. Я решил собрать здесь то, с чем мне когда-либо приходилось работать в этой сфере… Все эти конфиги рассчитаны на работу Nginx в связке с PHP-FPM. Также прошу обратить внимание, что указанное значение сокета PHP-FPM в данных примерах может отличаться в зависимости от ОС и конкретных настроек и версии PHP-FPM.

Данные примеры виртуальных хостов полностью работоспособны, но возможно вам понадобится их немного изменить под свою конфигурацию Nginx и PHP-FPM, чтобы все заработало, как положено. Проверить корректность нового конфига виртуального хоста или изменений в нем можно проверить командой nginx -t и лишь при положительном рапорте перезапускайте Nginx и если требуется, PHP-FPM и Memcached.

Все конфиги спрятаны под спойлерами, чтобы вам не пришлось прокручивать простыни текста :-).

Dokuwiki

<spoiler|dokuwiki.vhost>

server {
        listen 80;
	listen [::]:80;
        server_name wiki.server.tld www.wiki.server.tld; # Где server.tld - ваш домен

        charset utf-8;
        autoindex off;
        client_max_body_size 25M;
        client_body_buffer_size 128k;
        index index.html index.htm index.php doku.php;
        access_log  /var/log/nginx/wiki_access.log;
        error_log  /var/log/nginx/wiki_error.log;
        root /var/www/dokuwiki; # Укажите свой путь до рабочего каталога Dokuwiki

        location ~ ^/lib.*\.(gif|png|ico|jpg)$ {
                expires 30d;
        }

        location = /robots.txt  { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }
        location ~ /\.          { access_log off; log_not_found off; deny all; }
        location ~ ~$           { access_log off; log_not_found off; deny all; }

        location / {
                rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
                rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
                rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
                rewrite ^/(.*) /doku.php?id=$1 last;
                try_files $uri $uri/ @dokuwiki;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass   unix:/var/run/php/php7.0-fpm.sock; # Путь до сокета PHP
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
                fastcgi_param  QUERY_STRING     $query_string;
                fastcgi_param  REQUEST_METHOD   $request_method;
                fastcgi_param  CONTENT_TYPE     $content_type;
                fastcgi_param  CONTENT_LENGTH   $content_length;
                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout 60;
                fastcgi_send_timeout 180;
                fastcgi_read_timeout 180;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 4 256k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_temp_file_write_size 256k;
        }

        location ~ /(data|conf|bin|inc)/ {
                deny all;
        }

        location ~ /(data|conf|bin|inc)/ {
                deny all;
        }

        location ~ /\.ht {
                deny  all;
        }
}

</spoiler>

Seafile

<spoiler|seafile.vhost>

server {
        listen  80;
        server_name     cloud.server.tld        www.cloud.server.tld;    # Где server.tld - ваш домен

        root /var/www/seafile/seafile-server;    # Здесь вы можете указать путь к каталогу, отличный от указанного.
        charset utf-8;
        autoindex off;

        access_log  /var/log/nginx/seafile_access.log;
        error_log  /var/log/nginx/seafile_error.log;

        client_max_body_size 10G;

        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }

        location / {
                fastcgi_pass    127.0.0.2:80;
                fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
                fastcgi_param   PATH_INFO               $fastcgi_script_name;

                fastcgi_param   SERVER_PROTOCOL         $server_protocol;
                fastcgi_param   QUERY_STRING            $query_string;
                fastcgi_param   REQUEST_METHOD          $request_method;
                fastcgi_param   CONTENT_TYPE            $content_type;
                fastcgi_param   CONTENT_LENGTH          $content_length;
                fastcgi_param   SERVER_ADDR             $server_addr;
                fastcgi_param   SERVER_PORT             $server_port;
                fastcgi_param   SERVER_NAME             $server_name;
                fastcgi_param   REMOTE_ADDR             $remote_addr;

                access_log      /var/log/nginx/seahub.access.log;
                error_log       /var/log/nginx/seahub.error.log;
                fastcgi_read_timeout 36000;
        }

        location /seafhttp {
                rewrite ^/seafhttp(.*)$ $1 break;
                proxy_pass http://127.0.0.2:8082;
                client_max_body_size 0;
                proxy_connect_timeout  36000s;
                proxy_read_timeout  36000s;
                proxy_send_timeout  36000s;
                send_timeout  36000s;
        }

        location /media {
                root /var/www/seafile/seafile-server/seahub;
        }

        location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                access_log off;
        }
}

</spoiler>

ownCloud

<spoiler|owncloud.vhost>

server {
        listen  80;
        #listen   443 default ssl;    # Если используете HTTPS
        server_name     cloud.server.tld    www.cloud.server.tld;    # Где server.tld - ваш домен
        root /var/www/owncloud;

        #       ssl on;    # Если используете HTTPS
        #ssl_certificate /etc/nginx/ssl/server.crt;
        #ssl_certificate_key /etc/nginx/ssl/server.key;
        #ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers         HIGH:!aNULL:!MD5;

        access_log  /var/log/nginx/owncloud_access.log;
        error_log  /var/log/nginx/owncloud_error.log;

        client_max_body_size 10G;

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

        index index.php;

        error_page 403 /core/templates/403.php;
        error_page 404 /core/templates/404.php;

        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }

        charset utf-8;
        autoindex off;

        location ~ ^/(?:\.|data|config|db_structure\.xml|README) {
                deny all;
        }
        location / {
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
                        try_files $uri $uri/ index.php;
        }
        location ~ ^(.+?\.php)(/.*)?$ {
                                try_files $1 =404;
                                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                                include common/php-fpm;
                                include fastcgi_params;
                                fastcgi_index index.php;
                                fastcgi_param SCRIPT_FILENAME $document_root$1;
                                fastcgi_param PATH_INFO $2;
                                #fastcgi_param HTTPS $https;    # Если используете HTTPS
                                fastcgi_intercept_errors on;
                                fastcgi_buffers 64 4K;
        }

        location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                access_log off;

        }
}

</spoiler>

Modx

<spoiler|modx.vhost>

server {
	listen 80;
	listen [::]:80;

	server_name server.tld www.server.tld;    # где server.tld - ваш домен
	charset utf-8;
	autoindex off;

	access_log  /var/log/nginx/modx_access.log;
	error_log /var/log/nginx/modx_error.log;

	root /var/www/modx;    # укажите свой путь до рабочей директории
	index index.php;
	client_max_body_size 30M;

	location / {
		if (!-e $request_filename) {
		rewrite ^/(.*)$ /index.php?q=$1 last;}
	}

	location ~ \.php$ {
		try_files $uri =404;
		fastcgi_split_path_info ^(.+\.php)(.*)$;
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; #путь до сокета PHP
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		fastcgi_ignore_client_abort on;
		fastcgi_param  SERVER_NAME $http_host;
	}

	if (!-e $request_filename) {
		rewrite ^.+/?(/wp-.*) $1 last;
		rewrite ^.+/?(/.*\.php)$ $1 last;
		rewrite ^(.+)$ /index.php?q=$1 last;
	}

	location ~ /\.ht {
		deny  all;
	}
}

</spoiler>

WordPress

<spoiler|wordpress.vhost>

server {
	listen 80;
	listen [::]:80;

	server_name server.tld www.server.tld; # где server.tld - ваш домен;

        root /var/www/wordpress; #путь до директории сайта
        index index.html index.php;

	autoindex off;
	charset utf-8;
	expires epoch;
	disable_symlinks if_not_owner from=$document_root;
	client_max_body_size 25M;
	client_body_buffer_size 128k;

	access_log  /var/log/nginx/wp_access.log;
	error_log  /var/log/nginx/wp_error.log;

        gzip on;
        gzip_disable "msie6";
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

        location ~ /\. {
                deny all;
        }

        location ~* /(?:uploads|files)/.*\.php$ {
                deny all;
        }

        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off;
                log_not_found off;
                expires max;
        }

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; #путь до сокета PHP
		fastcgi_index index.php;
		include fastcgi_params;
		try_files $uri = 404;
		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		fastcgi_param  DOCUMENT_ROOT    $document_root;
		fastcgi_param  QUERY_STRING     $query_string;
		fastcgi_param  REQUEST_METHOD   $request_method;
		fastcgi_param  CONTENT_TYPE     $content_type;
		fastcgi_param  CONTENT_LENGTH   $content_length;
		fastcgi_intercept_errors        on;
		fastcgi_ignore_client_abort     off;
		fastcgi_connect_timeout 60;
		fastcgi_send_timeout 180;
		fastcgi_read_timeout 180;
		fastcgi_buffer_size 128k;
		fastcgi_buffers 4 256k;
		fastcgi_busy_buffers_size 256k;
		fastcgi_temp_file_write_size 256k;
        }
}

</spoiler>

Joomla

<spoiler|joomla.vhost>



</spoiler>

Drupal

<spoiler|drupal.vhost>



</spoiler>

Luciferus 2017/10/23 09:44

linux/nginx_vhost.txt · Последнее изменение: Luciferus