Как установить Apache с Nginx в качестве обратного прокси-сервера в Ubuntu 22.04
Apache и Nginx — бесплатные веб-серверы с открытым исходным кодом, которые входят в число самых популярных веб-серверов во всем мире. Они часто используются для размещения приложений на основе PHP. Nginx известен своей легкой структурой и скоростью, а Apache — своей производительностью. Оба предназначены для обработки различных рабочих нагрузок. Nginx хорошо приспособлен для обработки статического контента, а Apache может обрабатывать динамический контент. Мы можем использовать оба веб-сервера в одной системе, чтобы получить выгоду от обоих.
В этой статье показано, как установить Nginx в качестве обратного прокси-сервера для Apache в Ubuntu 22.04.
Предварительные условия
- Сервер под управлением Ubuntu 22.04.
- Действующее доменное имя, соответствующее IP-адресу вашего сервера.
- На сервере настроен пароль root.
Установить веб-сервер Apache
Пакет веб-сервера Apache по умолчанию включен в репозиторий Ubuntu 22.04 по умолчанию. Вы можете установить его, выполнив следующую команду:
apt-get install apache2 -y
После установки пакета Apache запустите службу Apache и включите ее запуск при перезагрузке системы:
systemctl start apache2
systemctl enable apache2
Изменить порт Apache по умолчанию
По умолчанию веб-сервер Apache прослушивает порт 80. В этом посте мы будем использовать Nginx в качестве обратного прокси-сервера для Apache. Поэтому вам нужно будет изменить порт Apache по умолчанию на 8080. Вы можете изменить его, отредактировав следующий файл:
nano /etc/apache2/ports.conf
Найдите следующую строку:
Listen 80
И заменил его следующей строкой:
Listen 127.0.0.1:8080
Сохраните и закройте файл, когда закончите. Далее вам также потребуется отредактировать файл конфигурации виртуального хоста Apache по умолчанию и изменить порт по умолчанию.
Вы можете отредактировать его с помощью следующей команды:
nano /etc/apache2/sites-available/000-default.conf
Найдите следующую строку:
<VirtualHost *:80>
И заменил его следующей строкой:
<VirtualHost 127.0.0.1:8080>
Сохраните и закройте файл, затем перезапустите службу Apache, чтобы применить изменения.
systemctl restart apache2
Теперь вы можете проверить статус Apache, используя следующую команду:
systemctl status apache2
Вы получите следующий результат:
? apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-05-05 12:02:11 UTC; 7s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 25295 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 25299 (apache2)
Tasks: 6 (limit: 4630)
Memory: 20.5M
CPU: 126ms
CGroup: /system.slice/apache2.service
??25299 /usr/sbin/apache2 -k start
??25300 /usr/sbin/apache2 -k start
??25301 /usr/sbin/apache2 -k start
??25302 /usr/sbin/apache2 -k start
??25303 /usr/sbin/apache2 -k start
??25304 /usr/sbin/apache2 -k start
May 05 12:02:11 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...
На этом этапе Apache запускается и прослушивает порт 8080. Проверить это можно с помощью следующей команды:
ss -antpl | grep apache2
Вы получите следующий результат:
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:* users:(("apache2",pid=25304,fd=3),("apache2",pid=25303,fd=3),("apache2",pid=25302,fd=3),("apache2",pid=25301,fd=3),("apache2",pid=25300,fd=3),("apache2",pid=25299,fd=3))
Установите веб-сервер Nginx
Вы можете установить пакет Nginx, выполнив следующую команду:
apt-get install nginx -y
После установки пакета Nginx запустите службу Nginx и включите ее запуск при перезагрузке системы:
systemctl start nginx
systemctl enable nginx
Настройте Nginx в качестве обратного прокси-сервера для Apache.
Теперь вам нужно будет настроить Nginx в качестве обратного прокси-сервера для перенаправления всех запросов, поступающих на порт 80, на порт 8080 веб-сервера Apache.
Для этого создайте файл конфигурации виртуального хоста Nginx:
nano /etc/nginx/conf.d/proxy.conf
Добавьте следующие строки:
server {
listen 80;
root /var/www/html/;
index index.html index.htm;
server_name proxy.example.com;
location \ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}
Сохраните и закройте файл, когда закончите. Затем проверьте Nginx на наличие синтаксических ошибок с помощью следующей команды:
nginx -t
Вы получите следующий результат:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Затем перезапустите службу Nginx, чтобы применить изменения:
systemctl restart nginx
Вы также можете проверить статус Nginx с помощью следующей команды:
systemctl status nginx
Вы получите следующий результат:
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-05-05 12:03:09 UTC; 5s ago
Docs: man:nginx(8)
Process: 25313 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 25314 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 25315 (nginx)
Tasks: 3 (limit: 4630)
Memory: 3.3M
CPU: 49ms
CGroup: /system.slice/nginx.service
??25315 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
??25316 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
??25317 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
May 05 12:03:09 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
May 05 12:03:09 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Проверка обратного прокси-сервера
На этом этапе Nginx установлен и настроен в качестве обратного прокси-сервера для веб-сервера Apache. Теперь вы можете протестировать его, используя URL-адрес http://proxy.example.com. Если все в порядке, вы увидите тестовую страницу Apache на следующем экране:
Заключение
В этом руководстве объясняется, как установить и настроить Nginx в качестве обратного прокси-сервера для веб-сервера Apache. Теперь вы можете использовать эту настройку для размещения любого приложения в Интернете. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.