Предпосылки
Установить Apache2
Конфигурация Apache2
Первое, что нужно сделать, это изменить порт по умолчанию, используемый Apache2, поэтому мы будем использовать порт 8000 вместо 80. В терминале введите следующую команду:
sudo nano /etc/apache2/ports.conf
Ищем строку:
Listen 80
Давайте поменяем дверь:
Listen 8000
Сохраните и закройте файл.
Теперь давайте изменим порт в VirtualHost. Всегда из терминала:
sudo nano /etc/apache2/sites-available/000-default.conf
Мы ищем:
<VirtualHost *:80>
Давайте поменяем дверь:
<VirtualHost *:8000>
Сохраните и закройте файл.
Мы можем установить модуль Apache2 libapache2-mod-rpaf, задачей которого является изменение адреса удаленного клиента, видимого для других модулей Apache.
sudo apt-get -y install libapache2-mod-rpaf
Перезапускаем Apache2:
sudo service apache2 restart
Установка и настройка Nginx.
Подробнее читайте в руководстве по Nginx
Из терминала:
sudo apt install nginx
Активируем автоматический запуск Nginx:
sudo systemctl enable nginx.service
Перезапустим Nginx:
sudo service nginx restart
Мы найдем конфигурации прокси по умолчанию в следующем файле:
sudo nano /etc/nginx/proxy_params
Добавим следующие стандартные конфигурации прокси:
proxy_set_header Host $http_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;
client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
Сохраните и закройте файл.
Откроем файл конфигурации Nginx:
sudo nano /etc/nginx/sites-available/default
Это базовая конфигурация, которая позволяет нам использовать Nginx в качестве обратного прокси-сервера Apache2:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location /{
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
}
Перезапустим Nginx
sudo service nginx reload
Nginx быстрее, чем Apache, обслуживает статические файлы, такие как Js и CSS, поэтому мы настраиваем Nginx для прямого обслуживания статических файлов и отправки PHP-запросов в Apache:
server {
listen 80;
server_name default_server;
root /var/www/html;
index index.php index.htm index.html;
location /{
try_files $uri $uri//index.php;
}
location ~ \.php$ {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
location ~* \.(js|css|jpg|jpeg|gif|png|svg|ico|pdf|html|htm)$ {
expires 30d;
}
}
Сохраните и закройте файл. Проверим правильность настройки Nginx:
sudo nginx -t
Итак, перезапускаем Nginx, если мы не допустили ошибок, он перезапустится без проблем:
sudo service nginx restart