21 Jan 2016 16:52:53
Автоматическая настройка виртуального хоста Nginx с помощью bash скрипта
Скрипт для автоматической настройки виртуального хоста для сервера nginx.Задачи:
- По шаблону создавать конфиг виртуального хоста.
- Иметь возможность задавать имя documen root.
- Добавлять имя хоста и локальный адрес 127.0.0.1 в конфиг ос.
- Хранить конфиги виртуальных хостов раздельно с настройками сервера.
- Перезагружать демон и выдавать сообщение об успехе.
#!/bin/bash # Created by Pavel Ruban # Contacts: http://pavelruban.org echo 'start processing nginx virtual host...' cat /etc/nginx/vhosts/vhost_template | sed s/\$1/$1/g | sed s/\$2/$2/g > /etc/nginx/vhosts/$1.conf echo '127.0.0.1 '$1' www.'$1 >> /etc/hosts systemctl restart nginx echo 'virtual host have been created successfull!'По адресу на файл vhost_template находится шаблон виртуального хоста который можно в любое время быстро настроить под свои нужды. Его содержимое:
server {
listen 80;
server_name $1 www.$1;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
error_log /http/log notice;
connection_pool_size 200m;
large_client_header_buffers 4 200m;
client_max_body_size 200m;
keepalive_timeout 10m;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
location = /50x.html {
root /usr/share/nginx/html;
}
root /http/$2;
location / {
index index.php;
try_files $uri @rewrite;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location ~ sites/.*?/files/.*?\.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
try_files $uri @rewrite;
}
location @rewrite {
# You have 2 options here
# For D7 and above:
# Clean URLs are handled in drupal_environment_initialize().
rewrite ^ /index.php last;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
try_files $uri = 404;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
}
}
Также в /etc/nginx/nginx.conf в секцию http {} нужно дописать include до ваших виртуальных хостов, чтобы хосты автоматически подключались.
include /etc/nginx/vhosts/*.conf;
Баш скрипт я назвал vhc (от аббревиатуры virtual host create), использовать его можно следующим образом - в консоле вызываете скрипт, передаете ему два аргумента - первый имя хоста, второй имя document root директории. И ваш хост поднят.
Пример:
vhc myhost.com myhost_old_data