На этом уроке мы собираемся предоставить вам шаг за шагом инструкции о том, как настроить Nginx серверные блоки на Ubuntu 16.04 VPS и на CentOS 7 VPS. Блоки сервера Nginx часто используются для запуска нескольких веб – сайтов на одном IP – адресе.
Обратите внимание, что данное учебное пособие только для Nginx. Если вы используете Apache, то вам необходимо настроить виртуальные хосты.
Установка Nginx на Ubuntu
Убедитесь, что пакеты сервер ОС полностью до современных:
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
Установка Nginx на CentOS
Убедитесь, что все пакеты ОС находятся в актуальном состоянии, выполнив следующие команды:
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
Давайте настроим основные директивы в главном файле конфигурации 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
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/