Перенастраиваем Apache за Nginx в Ubuntu 24.04.1
Используемая версия: Apache/2.4+, для версии 2.2 настройка будет отличаться в некоторых моментах.
Настройки
Приводим файл /etc/apache2/ports.conf
к следующему виду (Apache будет слушать порт 8080):
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 8080
#<IfModule ssl_module>
# Listen 443
#</IfModule>
#
#<IfModule mod_gnutls.c>
# Listen 443
#</IfModule>
Редактируем файл /etc/apache2/apache2.conf
:
sudo nano /etc/apache2/apache2.conf
Где-нибудь вставляем строку ServerName localhost
:
# Global configuration
#
ServerName localhost
Отключаем дефолтовый сайт:
sudo a2dissite 000-default
Отключаю от Apache поддержку php, работать будем через php-fpm.
udo a2dismod php8.2
Меняем mpm_prefork
на event
:
sudo a2dismod mpm_itk
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
Устанавливаем модуль поддержки fastcgi для поддержки работы с php-fpm:
sudo apt install libapache2-mod-fcgid
Включаем работу с php-fpm и proxy:
sudo a2enconf php8.2-fpm
sudo a2enmod proxy
sudo a2enmod proxy_fcgi
Для отображения в логах реального IP включаем ещё модуль:
sudo a2enmod remoteip
Создаём файл конфигурации модуля:
sudo nano /etc/apache2/conf-available/remoteip.conf
со следующим содержимым:
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1
RemoteIPInternalProxy 192.168.0.1/24
RemoteIPTrustedProxy 127.0.0.1 192.168.1.0/24 EXTERNAL_IP
</IfModule>
и включаем конфигурацию:
sudo a2enconf remoteip
Добавляем поддержку http2 (не знаю, на сколько это будет работать за Nginx, но на всякий включил), для этого редактируем файл /etc/apache2/apache2.conf
(Можно добавлять в директиву VirtualHost), опять же где-нибудь вставляем строку:
Protocols h2 h2c http/1.1
, где:
- h2 is HTTP/2 over TLS (protocol negotiation via ALPN).
- h2c is HTTP/2 over TCP.
Подключаем модуль:
sudo a2enmod http2
Перезапускаем Apache для применения изменений.
Скелет VirtualHost
(некоторые строки закомментированы), не забудьте внимательно перечитать файл и исправить некоторые строки с путями и пользователями на свои:
<VirtualHost 127.0.0.1:8080>
ServerName host.savenkoff.com
DocumentRoot /home/user_login/data/www/host_savenkoff_com
CustomLog /home/user_login/data/logs/apache.host.access.log combined
ErrorLog /home/user_login/data/logs/apache.host.error.log
ServerAdmin user_login@savenkoff.com
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
#php_admin_value open_basedir "/home/user_login/data:."
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f host@savenkoff.com"
#php_admin_value upload_tmp_dir "/home/user_login/data/tmp"
#php_admin_value session.save_path "/home/user_login/data/tmp"
AddDefaultCharset utf-8
DirectoryIndex index.html index.php
<Directory /home/user_login/data/www/host_savenkoff_com>
#Options -ExecCGI -Includes
# Options Indexes FollowSymLinks MultiViews
Options FollowSymLinks MultiViews
AllowOverride All
Require all granted
#php_admin_value open_basedir "/home/user_login/data:."
#php_admin_flag engine on
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>