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

Comments:

add comment