проксировать запросы к php файлам на apache который слушает порт 8080
Nginx как веб и прокси-сервер для Apache в Ubuntu 20.04
Apache и Nginx – два самых популярных веб-сервера с открытым исходным кодом. Они которые часто используются для работы с PHP. Их можно использовать для поддержки нескольких веб-сайтов с разными требованиями на одной виртуальной машине. Обычно два веб-сервера в одной системе используют для работы с несколькими IP-адресами или различными портами.
Серверы с поддержкой адресов IPv4 и IPv6 можно настроить для обслуживания веб-сервера Apache по одному протоколу и Nginx – по другому. Но это не очень практично, так как IPv6 до сих пор не получил широкого распространения. Можно также установить другой номер порта для второго веб-сервера, но использовать порты в ссылках очень неудобно (http://your_domain:81).
Этот мануал поможет настроить Nginx как веб-сервер и прокси-сервер для Apache на одном сервере Ubuntu 20.04.
При этом вам может понадобиться изменить код приложения, чтобы включить поддержку обратного прокси в Apache (особенно это касается сайтов с поддержкой SSL). Чтобы избежать этого, можно установить специальный модуль Apache, mod_rpaf, который переопределяет некоторые переменные среды, благодаря чему Apache может напрямую обслуживать запросы клиентов.
Мы покажем, как разместить четыре домена в рамках одного сервера. Два из них будут обслуживаться Nginx: nginx1.your_domain (стандартный виртуальный хост) и nginx2.your_domain. Другие два обслуживаются Apache: apache1.your_domain и apache2.your_domain. Мы также настроим Apache для поддержки PHP-приложений по PHP-FPM, что обеспечивает лучшую производительность по сравнению с mod_php.
Требования
1: Установка Apache и PHP-FPM
Сначала нужно установить Apache и PHP-FPM. Также для работы вам понадобится модуль Apache для PHP FastCGI под названием libapache2-mod-fastcgi.
Обновите индекс пакетов:
Установите необходимые пакеты:
sudo apt install apache2 php-fpm
Модуль Apache FastCGI недоступен в репозитории Ubuntu, поэтому загрузите его с kernel.org и установите с помощью команды dpkg.
2: Настройка Apache и PHP-FPM
Теперь нужно настроить порт 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
Примечание: Обычно адрес 127.0.0.1:8080 прослушивают прокси-серверы, но в нашем случае это позволит установить в качестве значения переменной РНР SERVER_ADDR loopback IP-адрес вместо внешнего IP-адреса сервера. Нашей целью является такая настройка Apache, при которой веб-сайты, поддерживаемые Apache, не увидят обратного прокси-сервера. Таким образом, Apache нужно настроить для прослушивания порта 8080 на всех IP-адресах.
После этого нужно отредактировать стандартный виртуальный хост Apache. Директива в этом файле обслуживает сайты только на порт 80, это нужно изменить.
Отключите стандартный файл:
sudo a2dissite 000-default
Создайте новый виртуальный хост на основе стандартного файла:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-default.conf
Откройте новый файл:
sudo nano /etc/apache2/sites-available/001-default.conf
Измените прослушиваемый порт на 8080:
Сохраните и закройте файл. Включите новый файл:
sudo a2ensite 001-default
sudo systemctl reload apache2
Установите пакет net-tools:
sudo apt install net-tools
Убедитесь, что веб-сервер прослушивает нужный порт:
Вывод команды должен выглядеть так:
3: Настройка модуля mod_fastcgi
По умолчанию Apache обслуживает PHP-страницы с помощью модуля mod_php. Но в данном случае нам нужен дополнительный модуль для PHP-FPM.
Примечание: Если вы выполняете мануал на сервере со стеком LAMP и включенным модулем mod_php, сначала отключите его:
sudo a2dismod php7.4
Добавьте блок настроек для mod_fastcgi. Он зависит от mod_action. Чтобы включить 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
Сохраните изменения и проверьте ошибки в файле:
Примечание: Если вы получили предупреждение
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.
Проигнорируйте его пока что. Мы настроим директиву ServerName чуть позже.
Если команда вернула Syntax OK, перезапустите Apache.
sudo systemctl reload apache2
4: Тестирование PHP
Убедитесь, что PHP работает должным образом. Для этого создайте файл /var/www/html/info.php и откройте его в браузере.
В файл нужно поместить функцию:
echo » » | sudo tee /var/www/html/info.php
Обратите внимание: если вы выполнили начальную настройку сервера согласно этому мануалу, вы, вероятно, включили брандмауэр для Apache. Давайте откроем доступ к нашему IP-адресу через порт 8080, который в настоящее время заблокирован. Мы ограничим общий доступ к этому порту в разделе 10.
Чтобы открыть порт в брандмауэре, введите команду:
sudo ufw allow 8080
Поскольку мы собираемся защитить наши домены Apache, давайте проверим, поддерживает ли брандмауэр трафик TLS на порт 443.
Включите профиль Apache Full, чтобы разрешить трафик на порты 80 и 443:
sudo ufw allow «Apache Full»
Теперь проверьте статус вашего брандмауэра:
Если вы выполнили предварительные требования к мануалу, результат будет выглядеть так:
Теперь откройте info.php в браузере:
На экране появится список настроек PHP.
В верхней части страницы найдите Server API, в этой строке должно быть указано FPM/FastCGI. Затем найдите раздел PHP Variables, строку SERVER_SOFTWARE. Она должна содержать Apache и Ubuntu. Это подтверждает, что mod_fastcgi включен и Apache поддерживает PHP-FPM для обработки файлов PHP.
5: Создание виртуального хоста Apache
Создайте виртуальные хосты Apache для доменов apache1.your_domain и apache2.your_domain. Сначала создайте корневые каталоги для этих сайтов.
Создайте index-файлы для каждого сайта:
Apache 1
Apache 2
Чтобы протестировать PHP, создайте файл phpinfo() для каждого сайта.
echo » » | sudo tee /var/www/apache1.your_domain/info.php
echo » » | sudo tee /var/www/apache2.your_domain/info.php
Затем создайте файл виртуального хоста для домена apache1.your_domain.
sudo nano /etc/apache2/sites-available/apache1.your_domain.conf
Поместите в него следующие строки:
ServerName apache1.your_domain
ServerAlias www.apache1.your_domain
DocumentRoot /var/www/apache1.your_domain
AllowOverride All
Теперь файл содержит базовые директивы виртуального хоста.
Сохраните и закройте файл. Теперь создайте такой же файл для apache2.your_domain.
sudo nano /etc/apache2/sites-available/apache2.your_domain.conf
Вставьте в него такие строки:
ServerName apache2.your_domain
ServerAlias www.apache2.your_domain
DocumentRoot /var/www/apache2.your_domain
Сохраните и закройте файл.
Итак, теперь виртуальные хосты Apache готовы. Чтобы включить сайты, используйте команду a2ensite, которая создаст симлинки на виртуальные хосты в каталоге sites-enabled.
sudo a2ensite apache1.your_domain
sudo a2ensite apache2.your_domain
Проверьте синтаксис Apache:
Если ошибок нет, перезапустите веб-сервер:
sudo systemctl reload apache2
Если в синтаксисе обнаружены ошибки, сначала исправьте их.
Чтобы убедиться, что сайты работают и каждый сайт отображает содержимое файла index.html, откройте в браузере:
На экране появится:
Apache 1
Apache 2
Теперь убедитесь, что PHP работает. Для этого откройте файлы info.php каждого сайта в браузере. Эти файлы доступны по ссылкам:
На экране должен появиться список настроек PHP (как в шаге 4).
Теперь Apache обслуживает два сайта по порту 8080. Перейдем к настройке Nginx.
6: Установка и настройка Nginx
Теперь нужно установить Nginx и настроить виртуальные хосты для доменов nginx1.your_domain и nginx2.your_domain.
sudo apt install nginx
Удалите симлинк стандартного виртуального хоста, он в дальнейшем не понадобится нам.
sudo rm /etc/nginx/sites-enabled/default
Теперь нужно создать новые виртуальные хосты для сайтов. Мы будем следовать той же процедуре, которую использовали для настройки Apache. Сначала создайте каталоги для них:
Мы будем хранить сайты Nginx в /usr/share/nginx, где Nginx ищет их по умолчанию. Вы можете разместить их в каталоге /var/www/html вместе с сайтами Apache, но для настройки Nginx удобнее разделить сайты.
Затем создайте файлы index и phpinfo():
Nginx 1
Nginx 2
Теперь создайте виртуальный хост для nginx1.your_domain.
sudo nano /etc/nginx/sites-available/nginx1.your_domain
\.php$ <
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
include snippets/fastcgi-php.conf;
>
>
Сохраните и закройте файл. Теперь создайте виртуальный хост для nginx2.your_domain.
sudo nano /etc/nginx/sites-available/nginx2.your_domain
Вставьте в этот файл такие строки:
\.php$ <
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
include snippets/fastcgi-php.conf;
>
>
Сохраните и закройте файл. Чтобы включить сайты, создайте симлинки для них:
Проверьте синтаксис Nginx:
Если ошибок нет, перезапустите веб-сервер:
sudo systemctl reload nginx
Теперь попробуйте открыть в браузере файлы phpinfo() для виртуальных хостов Nginx.
Проверьте раздел PHP Variables.
Строка [“SERVER_SOFTWARE”] должна показывать nginx (это значит, что файлы обслуживаются сервером Nginx). В [“DOCUMENT_ROOT”] должен находиться путь к root-каталогу сайта.
Теперь веб-сервер Nginx установлен и поддерживает два сайта.
7: Настройка Nginx для поддержки виртуальных хостов Apache
Теперь нужно создать дополнительный виртуальный хост Nginx для нескольких доменов в директиве server_name. Запросы к этим доменам будут проксироваться на Apache.
Создайте новый файл:
sudo nano /etc/nginx/sites-available/apache
Добавьте в него следующий блок настроек. Он задаёт имена сайтов Apache и проксирует их запросы. В proxy_pass укажите внешний IP.
Сохраните и закройте файл. Создайте симлинк:
Проверьте настройки на наличие ошибок:
Перезапустите Nginx, если ошибок не обнаружено.
sudo systemctl reload nginx
Откройте браузер и перейдите по ссылке:
Найдите раздел PHP Variables. Переменные SERVER_SOFTWARE и DOCUMENT_ROOT подтверждают, что запрос был обработан Apache. Переменные HTTP_X_REAL_IP и HTTP_X_FORWARDED_FOR были добавлены сервером Nginx и отображают внешний IP-адрес текущей машины.
Теперь Apache использует Nginx в качестве обратного прокси-сервера. Нужно установить переменную Apache, REMOTE_ADDR. Она позволяет «скрыть» прокси-сервер.
8: Установка и настройка модуля mod_rpaf
Теперь нужно установить модуль mod_rpaf, который будет переопределять значения REMOTE_ADDR, HTTPS и HTTP_PORTс помощью значений, предоставленных обратным прокси-сервером. Без этого модуля некоторые приложения PHP
могут потребовать изменений в коде. Модуль можно найти в репозитории Ubuntu, его пакет называется libapache2-mod-rpaf. Однако этот пакет устаревший и не поддерживает некоторых директив. Потому лучше скомпилировать модуль из исходного кода.
Чтобы собрать модуль, установите пакеты:
sudo apt install unzip build-essential apache2-dev
Загрузите последний релиз с GitHub:
Перейдите в рабочий каталог:
Скомпилируйте и установите модуль:
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
Сохраните и закройте файл.
Создайте файл для настроек модуля:
sudo nano /etc/apache2/mods-available/rpaf.conf
Добавьте в конфигурационный файл следующие строки:
RPAF_Enable On
RPAF_Header X-Real-Ip
RPAF_ProxyIPs your_server_ip
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
Этот файл содержит следующие настройки:
Примечание: Подробную информацию о настройках вы найдете в README модуля.
Сохраните файл rpaf.conf и включите модуль:
Эта команда создаст символьную ссылку файлов rpaf.load и rpaf.conf в каталоге mods-enabled. Проверьте настройки:
Перезапустите Apache, если ошибок не обнаружено.
sudo systemctl reload apache2
Откройте страницу phpinfo() одного из сайтов Apache и найдите раздел PHP Variables. Переменная REMOTE_ADDR теперь должна содержать IP локального сервера.
9: Поддержка HTTPS с помощью Let’s Encrypt (опционально)
Теперь нужно создать SSL-сертификаты для сайтов Apache. Получите бесплатные доверенные сертификаты от Let’s Encrypt.
Nginx поддерживает терминацию SSL, потому можно настроить SSL, не изменяя настроек Apache.
Модуль mod_rpaf установит все переменные Apache, необходимые для поддержки SSL.
Для начала создайте для обоих доменов блок server <…>, чтобы у каждого из них был свой сертификат. Откройте /etc/nginx/sites-available/apache:
sudo nano /etc/nginx/sites-available/apache
Отредактируйте файл, создав блок server для apache1.your_domain and apache2.your_domain:
Сертификаты TLS/SSL можно сгенерировать с помощью клиента Certbot. Его плагин для Nginx автоматически перенастроит веб-сервер и обновит конфигурационный файл.
Затем используйте команду certbot, чтобы сгенерировать сертификаты для apache1.your_domain и www.apache1.your_domain:
С помощью этой команды Certbot сможет использовать плагин nginx; флаг –d позволяет указать домены, для которых предназначен сертификат.
Выполните следующую команду для второго домена:
Попробуйте открыть один из этих сайтов в браузере с префиксом https://.
На появившейся странице найдите раздел PHP Variables. Для переменной SERVER_PORT установлено значение 443, а HTTPS – on, как если бы веб-сервер Apache был напрямую доступен через HTTPS.
Теперь давайте отключим прямой доступ к Apache.
10: Блокирование прямого доступа к Apache (опционально)
Apache слушает порт 8080 на внешнем IP-адресе, потому доступ к нему может получить любой желающий. Этот доступ можно заблокировать с помощью брандмауэра IPtables.
Примечание: Вместо your_server_ip укажите IP-адрес сервера.
Теперь порт 8080 блокируется брандмауэром, и доступ к Apache закрыт.
Откройте браузер и попробуйте получить доступ к одному из сайтов Apache.
Браузер должен выдать сообщение об ошибке «Unable to connect» или «Webpage is not available». Директива tcp-reset позволяет скрыть от посторонних разницу между портами.
Примечание: Правила IPtables сбрасываются при каждой перезагрузке сервера. Чтобы сохранить их, используйте iptables-persistent.
11: Обслуживание статических файлов с помощью Nginx (опционально)
Когда Nginx проксирует запросы доменов Apache, он отправляет Apache запрос каждого файла. Nginx быстрее, чем Apache, обслуживает статические файлы (изображения, JavaScript, стили). Отредактируйте виртуальный хост apache, чтобы настроить отправку PHP-запросов.
Откройте файл apache:
sudo nano /etc/nginx/sites-available/apache
Добавьте два блока location в каждый блок server и отредактируйте существующие блоки location.
Примечание: Вы можете просто заменить содержимое файла предложенными ниже конфигурациями.
Также нужно указать Nginx, где хранятся статические файлы каждого сайта.
Чтобы настроить поддержку HTTPS, используйте такую конфигурацию:
/\.ht <
deny all;
>
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
>
Внимание! Директива location
Сохраните и закройте файл. Проверьте код на наличие ошибок:
sudo service nginx reload
Убедитесь, что всё работает. Откройте лог-файлы Apache (/var/log/apache2) и просмотрите запросы GET для файлов info.php сайтов apache2.your_domain и apache1.your_domain. Команда tail выведет последние строки файла, а флаг –f покажет его изменения.
Откройте в браузере:
А затем проверьте ответ лога. Apache вернёт:
Проверьте страницу index.html каждого сайта. Вы не увидите записей от Apache. Все запросы обрабатывает Nginx.
Чтобы остановить команду tail, нажмите CTRL+C.
Единственным недостатком этой настройки является то, что Apache не сможет ограничивать доступ к статическим файлам. Доступ можно ограничить с помощью файла виртуального хоста apache.
Проксирующая связка и виртуальные хосты в ubuntu (nginx + apache2)
В этой статье речь пойдет о поднятии и настройке веб сервера и виртуальных хостов. nginx мы делаем, как фронт энд к apache.
Зачем нам это нужно? Все просто, это надо для улучшения производительности и более быстрой работы под высокими нагрузками, что очень актуально для социальных сетей или порталов с высокой посещаемостью. Суть всей этой затеи такова:
Apache является большой, толстой и неповоротливой скотиной, он долго выполняет и отдает содержимое, но он нужен, т.к. многие cms или фрэймворки используют его модули для организации своих ссылок и путей. Все эти конструкции можно ручками переписать для nginx, но, согласитесь, вместо быстрой установки cms, надо еще пол дня потратить на настройку — не лучший вариант. Выход из этого прост, схема такая:
На фронт энде стоит nginx, он получает запросы. Если от него хотят статическое содержимое (картинки, html файлы, pdf или что-то еще, что не надо выполнять), то сам nginx сразу же быстро эти данные вернет. Если надо обработать какой-нибудь php запрос, то nginx отдаст его на выполнение apache, он обработает и вернет nginx, а nginx быстро отдаст нам.
Взаимодействие на одной машине между apache и nginx намного быстрее, чем если бы мы просто работали с apache. Таким образом мы получаем хорошую связку для быстрой работы, где шустрый и быстрый nginx берет часть работы на себя. Давайте настроим всю эту тему.
После того, как мы установили систему (ubuntu server), мы также сразу же установили и LAMP сервере (linux+apache+mysql+php), куда вошли последние пакеты. Если Вы это не сделали, Вам надо установить их:
apt-get install apache2 mysql php5
Если у Вас уже все было установлено, Вам надо установить лишь nginx:
apt-get install nginx
Теперь мы настроим nginx так. чтобы он работал на всех интерфейсах и хостах на 80 порту, а apache висел только на localhost и порту 8080. Также нам понадобится модуль для apache mod_rpaf, давайте установим и его.
apt-get install libapache2-mod-rpaf
Модуль этот нужен для того, чтобы apache видел реальный ip подключения, а не ip nginx, т.е. модуль «пробрасывает» его через прокси и в логах мы видем настоящий ip подключения, что, безусловно, полезно. Хоть ниже мы и настраиваем proxy.conf, все равно модуль стоило бы поставить. У меня изначальные его настройки были верными. Посмотреть их можно в /etc/apache2/mods-enabled/rpaf.conf
Теперь перейдем к настройкам apache, давайте создадим файл конфигурации виртуального хоста. Допустим мы хотим поднять сайт ololo.lol, тогда нам надо создать файл в /etc/apache2/sites-enabled/ololo.lol
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel info
CustomLog /home/domains/ololo.lol/logs/access.log combined
Пути необходимо заменить на свои, разумеется и папки создать для логов и файлы — error.log для логирования ошибок и access.log для логирования подключений.
Теперь необходимо настроить nginx, но сначала настроим для него конфигурацию проксирования, в файле /etc/nginx/proxy.conf мы указываем переменные, значения которых определяют режим работы. Сколько данных можно передать, какое время максимально это может занять и т.п. По имени переменных все понятно. У меня этот файл такой:
Ну теперь конфиг виртуального хоста для сайта: /etc/nginx/sites-enabled/ololo.lol
upstream backend <
# Адрес back-end’a
server localhost:8080;
>
server <
listen 80;
server_name www.ololo.lol ololo.lol;
access_log /home/domains/ololo.lol/logs/nginx_access.log;
error_log /home/domains/ololo.lol/logs/nginx_error.log;
# Перенаправление на back-end
location / <
proxy_pass backend;
include /etc/nginx/proxy.conf;
>
# Статическиое наполнение отдает сам nginx
# back-end этим заниматься не должен
location
* \.(jpg|jpeg|gif|png|css|ico|bmp|swf|js)$ <
root /home/domains/ololo.lol/public_html/;
>
>
Для каждого сайта лучше делать отдельный поток (upstream) и указывать его имя в proxy_pass для более лучшей производительности и скорости работы (многопоточность ведь), однако это займет дополнительные аппаратные ресурсы, но работать все будет быстрее.
Вот и все. Кстати nginx был написан Игорем Сысоевым, его програма популярна во всем мире и является самым производительным веб сервером на сегодняшний день. Такие вот дела, господа.
Apache в качестве proxy http
Потребовалось в одном проекте прокинуть HTTP-трафик на внутренний сайт фирмы. Наружу смотрел Apache, а какой был внутри не суть важно, какое-то приложение с web-интерфейсом. Конечно у данной задачи есть масса решений. Люди работающие в данной сфере чаще всего предлагают решение с Nginx на периметре и он в свою очередь отдаёт трафик от нескольких web-серверов наружу. Так же на роутере можно прокинуть трафик с изменённым портом. Например, вместо 80 порта использовать 81 или 8080.
Но я не стал портить имеющуюся инфраструктуру и воспользовался наименее болезненным вариантом. И так, для того чтобы пробросить трафик на внутренний ресурс необходимо активировать прокси-модуль для Apache. Это делается в терминале операционной системы:
Я сначала думал, что достаточно будет только одного прокси-модуля, но как показала практика необходимо запускать целую династию этих проксей. Без этого при редиректах или подключениях с разных версий браузеров возникали ошибки номер 404 или 500. А в логах сыпалось, что необходимо воспользоваться LoadModule.
Идём дальше. Теперь необходимо создать виртуальный хост который будет перенаправлять запрос на другой физический сервер. В моём случае, на другой сервер расположеный в локальной сети. Мой хост выглядел вот так.
Поля ServerAdmin и DocumentRoot обязательны для заполнения и их игнорировать нельзя. По этому туда надо хоть что-то записать. Не забывайте, что в DNS должен существовать хост ServerName и он должен указывать на сервер на котором запущен Apache.
И так параметры, которые я использовал:
Если вы хотите организовать обратный прокси-сервер к сайтам внутри вашей сети с нуля, то я бы рекомендовал использовать для этих целей сервер Nginx. Используя его вы сможете организовать кэширование, балансировку и много иных приятных плюшек касающихся ваших web-серверов.
Успехов в администрировании.
Этот сайт использует файлы cookies, чтобы упростить вашу навигацию по сайту, предлагать только интересную информацию и упростить заполнение форм. Я предполагаю, что, если вы продолжаете использовать мой сайт, то вы согласны с использованием мной файлов cookies. Вы в любое время можете удалить и/или запретить их использование изменив настройки своего интернет-браузера.
Расширенная настройка web сервера (Apache2 + Nginx)
В этом руководстве мы рассмотрим процедуру установки и настройки работы двух web-серверов с целью использования преимуществ каждого из них, руководство подразумевает как отдельное настраивание, так и взаимное.
В этой статье будет идти речь о настройке сервера с использованием: Apache2, Nginx, ngx_pagespeed, PHP, PHP-FPM, MariaDB и MemCached.
Nginx
HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения.
Установка
Установите пакеты, необходимые для подключения apt-репозитория:
Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду:
Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов:
Проверьте, верный ли ключ был импортирован:
Вывод команды должен содержать полный отпечаток ключа 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 :
Чтобы установить nginx, выполните следующие команды:
Настройка
Проверяем, что пользователь nginx user www-data :
Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://«IP-адрес сервера».
В итоге мы должны увидеть заголовок «Welcome to nginx!».
PHP-FPM
FastCGI — протоколу взаимодействия веб-сервера с программами. FPM расшифровывается как Fastcgi Process Manager.
Установка
Настройка
Разрешаем автозапуск php-fpm и запускаем его:
ngx_pagespeed
ngx_pagespeed (или просто pagespeed) – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере. Дополнительную информацию о модуле можно найти на официальном сайте.
Установка
Устанавливаем необходимые пакеты:
Настройка
Создаем и переходим в папку, в которой будем собирать ngx_pagespeed :
Узнаем текущую версию nginx:
Скачиваем необходимую версию:
В нашем случае это nginx 1.18
Скачиваем репозиторий с ngx_pagespeed :
Скачиваем папку psol:
Собираем файл ngx_pagespeed.so :
Копируем файл ngx_pagespeed.so :
Apache2
Установка
Устанавливаем apache и модуль для php:
Настройка
Заходим в настройки портов:
И редактируем следующее:
мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.
по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.
Разрешаем модуль мультипроцессовой обработки mpm_prefork :
Разрешаем модуль php :
Разрешаем модуль rewrite :
Разрешаем модуль setenvif :
Разрешаем автозапуск и запускаем службу:
Открываем браузер и вводим в адресную строку http://«IP-адрес сервера»:8080. Мы должны увидеть привычную страницу.
в разделе Server API мы должны увидеть Apache.
Apache2 Real IP
Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.
Установка
Создаем конфигурационный файл со следующим содержимым:
Настройка
Для проверки настройки открываем браузер и вводим в адресную строку http://«IP-адрес сервера», где откроется наша страница phpinfo.
В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR.
Устанавливаем необходимые библиотеки для PHP и PHP-FPM:
Mysql (Mariadb)
Установка
Настройка
Разрешаем автозапуск и запускаем СУБД:
Зададим пароль для пользователя root:
Создаем и настраиваем пользователя:
Настраиваем возможность входа в adminer.php
Memcached
Memcached — Программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы.
Установка
Для начала, выполняем установку пакетов:
Настройка
После разрешаем автозапуск и запускаем сервис кэширования:
Для проверки, что модуль memcached появился в PHP, открываем наш сайт в браузере — в phpinfo должна появиться новая секция Memcached.
Доступы и настройка находится в файле memcached.conf :
Настройка пользователя
Добавляем пользователя в группу www-data :
Даем права sudo пользователю:
Настройка сайта
Создаем каталог для сайта
Задаем права на папки:
Создаем индексный файл:
Настройка сайта
Nginx http
Все запросы будут переводится на локальный сервер по порту 8080, на котором работает apache, кроме обращений к статическим файлам (jpg, png, css и так далее).
apache2
Проверяем
Проверяем корректность настроек конфигурационных файлов:
https (Существующий Сертификат)
Все запросы будут переводится на локальный сервер по порту 8080, на котором работает apache, кроме обращений к статическим файлам (jpg, png, css и так далее).
Apache2
Проверяем
Проверяем корректность настроек конфигурационных файлов:
ngx_pagespeed on
Загрузка динамического модуля PageSpeed
Откройте файл nginx.conf :
Добавляем в начало:
Настраивается PageSpeed в http контексте, поэтому поместите эти директивы в новый файл конфигурации под названием example.com.conf в файле /etc/nginx/conf.d каталог.
Создаем папку для хранения кэша:
Проверяем конфигурацию Nginx и применяем настройки: