На этом уроке мы собираемся предоставить вам шаг за шагом инструкции о том, как настроить Nginx серверные блоки на Ubuntu 16.04 VPS и на CentOS 7 VPS. Блоки сервера Nginx часто используются для запуска нескольких веб — сайтов на одном IP — адресе.
Обратите внимание, что данное учебное пособие только для Nginx. Если вы используете Apache, то вам необходимо настроить виртуальные хосты.
Убедитесь, что пакеты сервер ОС полностью до современных:
apt-get update apt-get upgrade
Остановите и удалите Apache, а затем установите Nginx с помощью следующих команд:
service apache2 stop apt-get remove apache2 apt-get autoremove apt-get install nginx
Удалите файл конфигурации Nginx по умолчанию:
rm /etc/nginx/sites-enabled/default
Включите службу Nginx для запуска при загрузке системы и запустите ее:
systemctl enable nginx systemctl start nginx.service
Убедитесь, что все пакеты ОС находятся в актуальном состоянии, выполнив следующие команды:
yum clean all yum update
Остановите и удалите Apache, если он установлен и запущен на виртуальном сервере:
systemctl stop httpd systemctl disable httpd yum remove httpd
Установка Nginx:
yum install nginx
Кроме того, вы можете установить PHP и MariaDB, поэтому выполните следующую команду:
yum install nginx mariadb mariadb-server php php-fpm php-cli php-curl php-gd php-mbstring php-mysql php-xml
Отредактируйте файл конфигурации /etc/php-fpm.d/www.conf и внесите изменения:
до
user = apache group = apache
после
user = www-data group = www-data
Выполните следующую команду:
chown www-data: -R /var/lib/php/session
Запустите службы PHP-FPM, Nginx и MariaDB и добавьте их в загрузку:
systemctl start php-fpm systemctl start nginx systemctl start mariadb
systemctl enable php-fpm systemctl enable nginx systemctl enable mariadb
Давайте настроим основные директивы в главном файле конфигурации Nginx под названием ‘nginx.conf‘. Он должен находиться в каталог /etc/nginx/ на вашем сервере.
vi /etc/nginx/nginx.conf
user www-data; worker_processes 4; pid /var/run/nginx.pid;
user — пользователь, который будет владеть и запустит сервер Nginx.
worker_processes — в общем, лучше установить конфигурацию Nginx worker_processes с числом процессоров. Если, например, если на сервере установлено 2 процессора, установите worker_processes равное 2.
Чтобы проверить количество процессоров на сервере, вы можете использовать следующую команду:
#cat /proc/cpuinfo | grep processor | wc -l 4
pid — место, где Nginx будет писать свой идентификатор мастера-процесса или PID.
Если вы используете CentOS, создайте новый конфигурационный файл Nginx для вашего сайта:
vi /etc/nginx/conf.d/domain1.ru.conf
Добавьте следующее содержимое:
server { server_name www.domain1.ru domain1.ru; listen 80; root /var/www/html/domain1.ru; access_log /var/log/nginx/domain1.ru-access.log; error_log /var/log/nginx/domain1.ru-error.log; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ \.php$ { try_files $uri = 404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } }
Если вам необходимо разместить более одного сайта на том же сервере (используя один и тот же IP-адрес), вы можете создать новый блок сервера. Лучше всего создать новый файл конфигурации для каждого веб-сайта.
Например, создайте второй файл конфигурации Nginx с именем /etc/nginx/conf.d/domain2.ru.conf и добавьте такое же содержание, как в файле /etc/nginx/conf.d/domain1.ru.conf, но убедитесь, что заменили domain1.ru вторым именем домена, включая корневой каталог документов вашего веб-сайта, расположение файлов журналов и т.д.:
server { server_name www.domain2.ru domain2.ru; listen 80; root /var/www/html/domain2.ru; access_log /var/log/nginx/domain2.ru-access.log; error_log /var/log/nginx/domain2.ru-error.log; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ \.php$ { try_files $uri = 404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } }
Если вы используете ОС Ubuntu, создайте файл конфигурации Nginx с именем domain1.ru.conf в каталоге /etc/nginx/sites-available.
vi /etc/nginx/sites-enabled/domain1.ru.conf
(Добавить такое же содержание, что и содержание перечисленных выше, т.е. /etc/nginx/conf.d/domain1.ru.conf на сервере CentOS).
Затем создать символическую ссылку из этого файла в каталог сайтов с поддержкой:
ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/
Повторите ту же процедуру и создайте новые файлы конфигурации для всех других сайтов, размещенных на сервере.
nginx -t
Если испытание прошло успешно, перезапустить службу Nginx:
systemctl restart nginx
Загрузка файлов в каталоги сайта /var/www/html/domain1.ru, /var/www/html/domain2.ru /var/www/html/domainN.ru.
Пользователь веб-сервер (www-data) должен иметь доступ к каталогам /var/www/html/domain1.ru, /var/www/html/domain2.ru, /var/www/html/domainN.ru. Это может быть легко достигнуто путем выполнения следующей команды:
chown -R www-data:www-data /var/www/html/