Настройка Nginx (веб-сервер и обратный прокси-сервер) + и Apache в Ubuntu
- Подробности
- Категория: Сисадмин
- Просмотров: 1460
Системный администратор должен уметь настраивать эффективные сборки для сайтов...
Настройка Nginx (веб-сервер и обратный прокси-сервер) + и Apache в Ubuntu - это эффективная и популярная сборка, которая часто применяется, когда нужно на одном сервере установить 2 и более сайтов.
В данном случае запросы идут на 80 порт, который обрабатывает Nginx, далее идут на Apache - который обрабатывает бэкенд. Модуль Apache - mod_rpaf - позволяет подменять переменные сервера и создается ощущение, что все как бы работает на Apache. Но Nginx обрабатывает быстрее большое количество запросов, поэтому его ставят на вход.
Мы настроим два домена test1.ru и test2.ru для примера. Для обслуживания PHP - в Apache будет настроен PHP-FPM, который более производительный чем mod_php.
Что потребуется:
- Сервер с первоначальной настройкой с новым пользователем и брандмауэром.
- 2 домена с настроенными А-записями (ip адрес направляется на хостинг)
1 шаг - Установка Apache и PHP-FPM
Помимо Apache и PHP-FPM мы также установим модуль PHP FastCGI Apache, libapache2-mod-fastcgi, для поддержки веб-приложений FastCGI.
Обновим список пакетов
sudo apt update
Установим Apache и PHP-FPM:
sudo apt install apache2 php-fpm
Модуль FastCGI Apache недоступен в хранилище Ubuntu, и поэтому грузим его с kernel.org и устанавливаем с помощью команды dpkg.
wget https://mirrors.edge.kernel.org/ubuntu/pool/multiverse/liba/libapache-mod-fastcgi/libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb
sudo dpkg -i libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb
Шаг 2 — Настройка Apache и PHP-FPM
Для использования PHP-FPM необходимо поменять конфигурацию Apache:
Для начала настроим порт 8080 и только потом будем переходить к 80 порту.
Давайте изменим номер порта Apache на 8080 и настроим его для работы с PHP-FPM с использованием модуля mod_fastcgi. Переименуем файл конфигурации Apache ports.conf:
sudo mv /etc/apache2/ports.conf /etc/apache2/ports.conf.default
Создаем новый файл ports.conf и установите в нем порт 8080:
echo "Listen 8080" | sudo tee /etc/apache2/ports.conf
Отключаем виртуальный хост по умолчанию:
sudo a2dissite 000-default
Далее создаем новый файл виртуального хоста, используя существующий сайт по умолчанию:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-default.conf
Вместо этого 001-default.conf можно использовать название домена, если у вас много сайтов, но для начала, чтобы не запутаться лучше сделайте также.
Открываем его на редактирование:
sudo nano /etc/apache2/sites-available/001-default.conf
Меняем порт на 8080:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Сохраняем файл и активируем его - это новый файл конфигурации:
sudo a2ensite 001-default
Перезагружаем Apache:
sudo systemctl reload apache2
Проверяем, что Apache слушает именно 8080 порт:
sudo netstat -tlpn
будет что-то такое:
tcp6 0 0 :::8080 :::* LISTEN 4678/apache2
Только убедившись в этом, переходим к настройке поддержки PHP и FastCGI.
Шаг 3 — Настройка Apache для использования mod_fastcgi
Мы добавим блок конфигурации для mod_fastcgi, который зависит от mod_action.
По умолчанию Apache обслуживает запросы от PHP по модулю mod_php , но для работы с PHP-FPM его необходимо донастроить. Мы добавим настройку mod_fastcgi, который как раз зависит от mod_php.
По умолчанию mod_action отключен, и предварительно его нужно включить, поэтому делаем это:
sudo a2enmod actions
Переименуем существующий файл конфигурации FastCGI (на всякий случай):
sudo mv /etc/apache2/mods-enabled/fastcgi.conf /etc/apache2/mods-enabled/fastcgi.conf.default
Создаем новый файл конфига:
sudo nano /etc/apache2/mods-enabled/fastcgi.conf
Прописываем следующие директивы для передачи запросов файлов .php в сокет PHP-FPM UNIX:
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir /var/lib/apache2/fastcgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php8.1-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Обратите внимание на php8.1-fpm - тут должна быть ваша версия, иначе работать не будет.
Сохраняемся и проверяем файл настройки:
sudo apachectl -t
Если ок, то перезагружаем:
sudo systemctl reload apache2
Обратите внимание: ошибка может быть вида "Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message" - ничего страшного, ниже мы донастроим имена серверов.
Шаг 4 — Проверка функционала PHP
Ну вот, пришла пора тестировать работает ли PHP, обычно это делается банально просто устанавливают функцию phpinfo() , мы сделаем также:
Создаем файл /var/www/html/info.php, вызывающий функцию phpinfo:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Чтобы посмотреть на результат, открываем браузер и вбиваем http://your_server_ip:8080/info.php
Главное, что тут нужно посмотреть:
- Server API - со значением FPM/FastCGI
- Раздел «Переменные PHP» ниже должен покзаать, что параметр SERVER_SOFTWARE имеет значение Apache на Ubuntu. Это означает, что модуль mod_fastcgi успешно активирован и уже работает, и что Apache использует PHP-FPM для обработки файлов PHP.
Шаг 5 — Создание виртуальных хостов для Apache
Для начала создаем файлы виртуальных хостов Apache для доменов test1.ru и test2.ru. Для этого мы создадим корневые каталоги документов document root для обоих сайтов и разместим в эти каталоги файлы - для легкого теста нашего конфига.
Создадим корневые каталоги документа:
sudo mkdir -v /var/www/test1.ru /var/www/test2.ru
Создадим еще index файлы
echo "<h1 style='color: green;'>Foo Bar</h1>" | sudo tee /var/www/test1.ru/index.html
echo "<h1 style='color: red;'>Test IO</h1>" | sudo tee /var/www/test2.ru/index.html
Создаем info.php также для каждого сайта
echo "<?php phpinfo(); ?>" | sudo tee /var/www/test1.ru/info.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/test2.ru/info.php
Далее создаем файл виртуального хоста для домена test1.ru
sudo nano /etc/apache2/sites-available/test1.ru.conf
и вставьте это (табы вставьте или 4 пробела для красоты)
<VirtualHost *:8080>
ServerName test1.ru
ServerAlias www.test1.ru
DocumentRoot /var/www/test1.ru
<Directory /var/www/test1.ru>
AllowOverride All
</Directory>
</VirtualHost>
Строка AllowOverride All активирует поддержку .htaccess.
Тут будет полная настройка хостов Apache в Ubuntu
А далее создайте также файл виртуального хоста для домена test2.ru
Теперь, когда мы создали оба виртуальных хоста Apache, разрешим сайтам использовать команду a2ensite. Это создаст символическую связь с файлом виртуального хоста в каталоге sites-enabled:
sudo a2ensite test1.ru
sudo a2ensite test2.ru
Как обычно, проверяем настройки Apache - на наличие ошибок:
sudo apachectl -t
Если пишет Syntax Ok , тогда перезагружаем Апач
sudo systemctl reload apache2
Чтобы убедиться, что все ок, переходим в браузер и открываем ссылки http://test1.ru:8080 и http://test2.ru:8080 и убедитесь, что для каждого из сайтов отображается файл index.html.
И смотрим http://test1.ru:8080/info.php и http://test2.ru:8080/info.php
Ну все, первую часть мы сделали и настроили порт 8080 на отображение результатов работы Apache, далее настроим Nginx , а потом и их связку.
Шаг 6 — Установка и настройка Nginx
В данном шаге мы установим Nginx и создадим виртуальные хосты для наших двух доменов (тут будет полное руководство чуть позже).
Установим Nginx:
sudo apt install nginx
Удалим symlink по умолчанию виртуального хоста, поскольку нам он не нужен и мы не будем его использовать:
sudo rm /etc/nginx/sites-enabled/default
Виртуальные хосты для Nginx создаются аналогично Apache и для начала создадим нужные каталоги для наших сайтов:
sudo mkdir -v /usr/share/nginx/test1.ru /usr/share/nginx/test2.ru
Nginx требует хранить сайты тут /usr/share/nginx так мы и сделаем, хотя в конце нашего мануала сайт будет браться с разделов, который требует Apache - /var/www/html .
Также, пока что, для проверки работоспособности создадим тут файлы index.html и info.php
echo "<h1 style='color: green;'>Example.com</h1>" | sudo tee /usr/share/nginx/test1.ru/index.html
echo "<h1 style='color: red;'>Sample.org</h1>" | sudo tee /usr/share/nginx/test2.ru/index.html
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/test1.ru/info.php
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/test2.ru/info.php
Создаем файлы виртуального хоста Nginx:
sudo nano /etc/nginx/sites-available/test1.ru
Nginx обрабатывает директивы server и так как его мы назначаем "на вход", то есть изначально он будет принимать запросы, то прописываем default_server configuration - что делает его виртуальным хостом по умолчанию для обработки запросов HTTP.
server {
listen 80 default_server;
root /usr/share/nginx/test1.ru;
index index.php index.html index.htm;
#server_name test1.ru www.test1.ru; #эту строчку почему то закомментировали и заработало - тут вопрос пока у меня тоже
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
include snippets/fastcgi-php.conf;
}
}
Аналогичный файл создаем и для test2.ru
После сохранения файлов, активируем наши сайты с помощью символических ссылок:
sudo ln -s /etc/nginx/sites-available/test1.ru /etc/nginx/sites-enabled/test1.ru
sudo ln -s /etc/nginx/sites-available/test2.ru /etc/nginx/sites-enabled/test2.ru
Тестируем все ли норм:
sudo nginx -t
Перезагружаем, если нет ошибок:
sudo systemctl reload nginx
Настало время тестировать, переходим по адресу http://test.ru/info.php - должна отработать функция phpinfo().
Смотрим раздел PHP Variables:
- [SERVER_SOFTWARE] должен иметь значение nginx, указывая, что файлы обслуживются Nginx напрямую.
- [DOCUMENT_ROOT] - должен соответствовать нашему значению /usr/share/nginx/test1.ru
!!! тут работать скорее всего не будет, надо еще разрешить 80 порта в firewall
ufw allow 80
Шаг 7 — Настройка Nginx для виртуальных хостов Apache
Пришло время подружить Nginx и Apache.
Создадим дополнительный виртуальный хост Nginx с несколькими именами доменов в директивах server_name. Запросы этих доменов будут перенаправляться через прокси-сервер в Apache.
Создаем новый файл виртуального хоста Nginx для перенаправления запросов в Apache:
sudo nano /etc/nginx/sites-available/apache
server {
listen 80;
server_name test1.ru www.test1.ru test2.ru www.test2.ru;
location / {
proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
тут your_server_ip - ставим ip сервера.
Создаем симлинк для активации нового файла виртуального хоста:
sudo ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled/apache
Тестируем и перезапускаем:
sudo nginx -t
если ошибок нет:
sudo systemctl reload nginx
Открываем браузер и URL-адрес http://test1.ru/info.php. Смотрим раздел PHP Variables и в этот раз видим:
- SERVER_SOFTWARE - теперь указывает на Апач
- а DOCUMENT_ROOT - на /var/www/test1.ru
Таким образом, мы понимаем, что запрос был обработан Apache.
Переменные HTTP_X_REAL_IP и HTTP_X_FORWARDED_FOR были добавлены Nginx и должны показывать публичный IP-адрес компьютера, используемого для доступа к URL-адресу.
Основную часть закончили и вот итог:
Мы успешно настроили Nginx для перенаправления запросов определенных доменов в Apache через прокси-сервер.
Далее сделаем немного маскировки и настроим Apache для установки переменной REMOTE_ADDR, как если бы эти запросы обрабатывались напрямую.
Шаг 8 — Установка и настройка mod_rpaf
Нам нужно перезаписать переменные REMOTE_ADDR, HTTPS и HTTP_PORT на базе значений, предоставленных обратным прокси-сервером., чтобы это работало бесшовно - и в этом нам поможет модуль Apache под названием mod_rpaf (Ubuntu как libapache2-mod-rpaf - устаревшая версия)
Для работы модуля установим необходимые пакеты:
sudo apt install unzip build-essential apache2-dev
Загружаем последний стабильный выпуск из GitHub:
wget https://github.com/gnif/mod_rpaf/archive/stable.zip
Извлекаем:
unzip stable.zip
Переходим в новый каталог:
cd mod_rpaf-stable
Компилируем и устанавливаем файлы:
make
sudo make install
Создадим в каталоге mods-available файл, который будет загружать модуль rpaf,
sudo nano /etc/apache2/mods-available/rpaf.load
со следующим содержимым:
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf.so
Сохраняемся и создаем в этом каталоге другой файл с именем rpaf.conf, который будет содержать директивы конфигурации для mod_rpaf:
sudo nano /etc/apache2/mods-available/rpaf.conf
<IfModule mod_rpaf.c>
RPAF_Enable On
RPAF_Header X-Real-Ip
RPAF_ProxyIPs your_server_ip
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
</IfModule>
где:
- RPAF_Header — заголовок, используемый для реального IP-адреса клиента.
- RPAF_ProxyIPs — IP-адрес прокси-сервера для корректировки запросов HTTP.
- RPAF_SetHostName — обновляет имя vhost так, чтобы работали параметры ServerName и ServerAlias.
- RPAF_SetHTTPS — задает переменную среды HTTPS на основе значения, содержащегося в X-Forwarded-Proto.
- RPAF_SetPort — задает переменную среды SERVER_PORT. Полезна для использования, когда сервер Apache находится за прокси-сервером SSL.
не забываем заменить your_server_ip - на адрес вашего сервера.
Описание переменных - https://github.com/gnif/mod_rpaf/blob/stable/README.md#configuration-directives
Сохраняем rpaf.conf и активируйте модуль:
sudo a2enmod rpaf
При этом создаются символические ссылки файлов rpaf.load и rpaf.conf в каталоге mods-enabled.
Тестим:
sudo apachectl -t
Если нет ошибок, то перезагружаем:
sudo systemctl reload apache2
Проверим все ли верно, для этого откроем в браузере страницы phpinfo() по адресам http://test1.ru/info.php и http://test2.ru/info.php и проверьте раздел PHP Variables. Тут должно кое-что измениться, а именно - переменная REMOTE_ADDR также будет использоваться для публичного IP-адрса вашего локального компьютера.
Следующим шагом настроим шифрование TLS/SSL для каждого сайта - чтобы наши сайты были более защищенными.
Шаг 9 — Настройка сайтов HTTPS с Let’s Encrypt
Let’s Encrypt позволяет бесплатно получать сертификат для вашего сайта, причем все происходит в считанные секунды.
Nginx поддерживает конечные узлы SSL, и поэтому мы можем настроить SSL без изменения файлов конфигурации Apache. Модуль mod_rpaf обеспечивает установку в Apache переменных среды, необходимых для бесшовной работы приложений за обратным прокси-сервером SSL.
Вначале мы разделим блоки server обоих доменов так, что у каждого из них будет собственный сертификат SSL. Откройте в своем редакторе файл /etc/nginx/sites-available/apache:
sudo nano /etc/nginx/sites-available/apache
и наполним его таким содержимым:
server {
listen 80;
server_name test1.ru www.test1.ru;
location / {
proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name test2.ru www.test2.ru;
location / {
proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
не забудьте подставить свои значения тут your_server_ip
Наиболее простое решение для генерации сертификатов TLS/SSL - это модуль Certbot.
Плагин САМОСТОЯТЕЛЬНО изменит конфигурацию Nginx и перезагрузит ее, когда это потребуется.
Добавим официальное хранилище Certbot:
sudo add-apt-repository ppa:certbot/certbot
Нажмите ENTER в диалоге, чтобы подтвердить добавление нового хранилища.
Обновим список пакетов
sudo apt update
Установим пакет Certbot’s Nginx с apt:
sudo apt install python-certbot-nginx
!!! если у вас ubuntu 20 и выше, то команда будет такая: sudo apt install certbot python3-certbot-nginx
После установки используем команду certbot для генерирования сертификатов для наших доменов:
sudo certbot --nginx -d test1.ru -d www.test1.ru
в первый раз будет выведена просьба указать email , и далее подтвердить условия обслуживания.
Далее Certbot запросит желаемый вариант настройки HTTPS:
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
я тут не помню, что выбирал, даже вроде просто Enter нажал, но у меня все обновилось...по идее надо нажимать 2 - чтобы все прописалось и была автоматическая переадрессация на защищенное соединение https. После нажать Enter и будет перезагрузка Nginx с автопропиской новых параметров - а именно путей расположения ключей.
Но в целом получается обычные шаред хостинги оставляет видимо цифру 1 , а потом пользователи уже сами редирект настраивают в .htaccess - так что я видимо также сделал.
Теперь откроем сайт по адресу https://test1.ru/info.php и видим, что по защищенному https у нас открывается сайт - это круто!
и в PHP Variables для переменной SERVER_PORT задано значение 443 и протокол HTTPS включен, как если бы осуществлялся прямой доступ к Apache через HTTPS. При такой настройке переменных не нужно специально настраивать приложения PHP для работы за обратным прокси-сервером.
Далее отключим прямой доступ к Apache.
Шаг 10 — Блокировка прямого доступа к Apache
Поскольку Apache прослушивает порт 8080 на публичном IP-адресе, он доступен кому угодно - это нам не нужно, мы за безопасность. Его можно заблокировать с помощью следующей команды IPtables в наборе правил брандмауэра.
sudo iptables -I INPUT -p tcp --dport 8080 ! -s your_server_ip -j REJECT --reject-with tcp-reset
Проверяем и смотрим, что сайт уже перестал быть доступным по порту 8080:
http://example.com:8080
Далее один из последних шагов - настроим Nginx для обслуживания статических файлов для сайтов Apache.
Шаг 11 — Обслуживание статических файлов с помощью Nginx
Когда Nginx перенаправляет запросы доменов Apache через прокси-сервер, каждый запрос файла этого домена отправляется в Apache. Nginx обслуживает статические файлы, такие как изображения, JavaScript и таблицы стилей, быстрее Apache. Поэтому мы настроим файл виртуального хоста Nginx apache
для прямого обслуживания статических файлов и перенаправления запросов PHP в Apache.
Откроем для редактирования /etc/nginx/sites-available/apache:
sudo nano /etc/nginx/sites-available/apache
Пропишем дополнительные location для поиска статики и слегка поправим существующий:
1 вариант - без использование SSL и TLS - кому только он может понадобиться сегодня? ведь без https сайты поисковики недолюбливают
server {
listen 80;
server_name test1.ru www.test1.ru;
root /var/www/test1.ru;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\.ht {
deny all;
}
}
server {
listen 80;
server_name test2.ru www.test2.ru;
root /var/www/test2.ru;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://your_ip_address:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\.ht {
deny all;
}
}
2 вариант - для SSL и TLS - этот используем в большинстве современных сайтов
server {
listen 80;
server_name test1.ru www.test1.ru;
root /var/www/test1.ru;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\.ht {
deny all;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/test1.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test1.ru/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
listen 80;
server_name test2.ru www.test2.ru;
root /var/www/test2.ru;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://your_ip_address:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\.ht {
deny all;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/test2.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test2.ru/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Обратите внимание:
- Директива try_files указывает Nginx искать файлы в корне документа document root и выводить их напрямую. Если файл имеет расширение .php, запрос перенаправляется в Apache. Даже если файл отсутствует в document root, запрос перенаправляется в Apache, чтобы функции приложения (например, постоянные ссылки) работали без проблем.
- Директива location ~ /\.ht очень важна, поскольку она не дает Nginx выводить содержимое файлов конфигурации Apache с важными данными, таких как .htaccess и .htpasswd.
Сохраняемся и тестируем:
sudo nginx -t
Перезапуск:
sudo service nginx reload
Чтобы убедиться, что все работает смотрим файлы журнала Apache в каталоге /var/log/apache2 и запросы GET для файлов info.php сайтов наших доменов. Использовать можно команду tail для просмотра последних нескольких строк файла и параметр -f для просмотра изменений файла:
sudo tail -f /var/log/apache2/other_vhosts_access.log
Вроде бы и все настроили, но нет...я загрузил движок своего сайта на хостинг и он отказывался работать, так как в нем были файлы htaccess и в нем была директива mod_rewrite. После его установки, я установил сервер базы данных mysql и залил базу и все заработало.