Лайфхаки

Маленькие, полезные хитрости

Как использовать Nginx в качестве обратного прокси. Как настроить Nginx в качестве обратного прокси для Apache

21.06.2022 в 14:58

Как использовать Nginx в качестве обратного прокси. Как настроить Nginx в качестве обратного прокси для Apache

Веб-серверы Apache, Nginx можно использовать как по отдельности, так и в связке. Nginx обрабатывает данные быстро, но требует установки модуля PHP-FPM. Популярные CMS по традиции заточены под работу с Apache (из-за наличия .htaccess), но для его работы требуется больше ресурсов.

В статье покажем, как объединить их и использовать скорость Nginx для обработки фронтенда, а гибкость Apache — для бэкенда.

Перед настройкой убедитесь, что вы используете сервер, на котором установлена только ОС Ubuntu 16.04

1 этап. Установка и настройка Nginx

Рассмотрим, как установить и настроить Nginx для обработки фронтенда.

  1. 3.

    Скопируйте правила ниже и вставьте их в редакторе:

    server { listen 80; root /var/www/; index index.php; server_name example.com; location / { try_files $uri $uri/ /index.php$args; } location ~ \.php$ { 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; } location ~ /\. { deny all; } }

    Таким образом:

    • в качестве root установлен правильный веб-каталог;
    • index.php был добавлен в качестве index;
    • try_files пытается обслуживать любую страницу, которую запрашивает посетитель. Если Nginx не может, файл передается на прокси;
    • proxy_pass перед Nginx адрес для proxy;
    • последний блок location запрещает доступ к файлам к скрытым файлам.

    Эти правила нужны для настройки системы и перенаправления всех файлов с расширением .php на сервер Apache, если он будет использовать порт 8080.

  2. 4.

    Сохраните изменения и выйдите из редактора.

Nginx обратный прокси https. Securing HTTP Traffic to Upstream Servers

Secure HTTP traffic between NGINX or NGINX Plus and upstream servers, using SSL/TLS encryption.

This article explains how to encrypt HTTP traffic between NGINX and a upstream group or a proxied server.

Prerequisites

  • NGINX Open Source or NGINX Plus
  • A proxied server or an upstream group of servers
  • SSL certificates and a private key

Obtaining SSL Server Certificates

You can purchase a server certificate from a trusted certificate authority (CA), or your can create own internal CA with an OpenSSL library and generate your own certificate. The server certificate together with a private key should be placed on each upstream server.

Obtaining an SSL Client Certificate

NGINX will identify itself to the upstream servers by using an SSL client certificate. This client certificate must be signed by a trusted CA and is configured on NGINX together with the corresponding private key.

You will also need to configure the upstream servers to require client certificates for all incoming SSL connections, and to trust the CA that issued NGINX’ client certificate. Then, when NGINX connects to the upstream, it will provide its client certificate and the upstream server will accept it.

Nginx + Apache настройка. NGINX + Apache + MariaDB (MySQL) + PHP + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Memcached + Postfix на Ubuntu

Описание

Данная инструкция позволит настроить веб-сервер для решения большей части задач по размещению сайтов, порталов или веб-приложений. Она подходит для серверов на Ubuntu и других систем на основе deb-пакетов. Для RPM Linux читайте похожую инструкцию по настройке полноценного веб-сервера на CentOS .

Настройка операционной системы

1. Обновляем Ubuntu:

apt update && apt upgrade

2. Настраиваем время:

apt install chrony

timedatectl set-timezone Europe/Moscow

systemctl enable chrony

* первая команда для установки пакета синхронизации времени; вторая задает часовой пояс по московскому времени; третья разрашит автозапуск chrony .

3. По умолчанию, в Ubuntu брандмауэр работает в режиме «разрешить все». Но если мы настроили защиту по максимуму, то для веб-сервера открываем следующие порты:

iptables -I INPUT 1 -p tcp --match multiport --dports 80,443,8080 -j ACCEPT

iptables -I INPUT 1 -p tcp --match multiport --dports 20,21,60000:65535 -j ACCEPT

* 80, 443 и 8080 порты для веб-сервера ; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); Подробнее про настройку iptables .

Для сохранения правил ставим пакет iptables-persistent:

apt install iptables-persistent

Для сохранения правил вводим команду:

netfilter-persistent save

Установка NGINX

Устанавливаем NGINX:

apt install nginx

Внесем изменение в файл nginx.conf:

vi /etc/nginx/nginx.conf


* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32 . Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.

Перезапускаем nginx:

systemctl enable nginx

systemctl reload nginx

* в процессе запуска мы можем увидим ошибку — возможно, в системе работает другой веб-сервер и занимает 80 порт. Как правило, это apache. Чтобы его выключить (на данном этапе он нам не нужен) вводим команду systemctl stop apache2 .

Проверим работу веб-сервера. Открываем браузер и вводим в адресной строкеhttp://. В итоге мы должны увидеть заголовок «Welcome to nginx!»:

Nginx + Apache настройка. NGINX + Apache + MariaDB (MySQL) + PHP + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Memcached + Postfix на Ubuntu

Если стартовая страница не загружается, проверяем состояние сервиса:

systemctl status nginx

Установка PHP и PHP-FPM

Устанавливаем PHP и PHP-FPM:

apt install php php-fpm

Разрешаем автозапуск php-fpm и запускаем его:

systemctl enable php7.4-fpm

* обратите внимание, что мы запустили php-fpm версии 7.4. Но установлена может быть и другая версия — ее можно узнать по версии php командой php -v .

Обратный прокси это. Обратный прокси

Обратный прокси-сервер ( англ.   reverse proxy ) — тип прокси-сервера , который ретранслирует запросы клиентов из внешней сети на один или несколько серверов , логически расположенных во внутренней сети. При этом для клиента это выглядит так, будто запрашиваемые ресурсы находятся непосредственно на прокси-сервере.В отличие от классического прокси, который перенаправляет запросы клиентов к любым серверам в Интернете и возвращает им результат, обратный прокси непосредственно взаимодействует лишь с ассоциированными с ним серверами и возвращает ответ только от них.

    , страницы, генерируемые динамически, могут быть отданы серверу и обработаны уже им.

    Nginx Proxy Manager настройка. Reverse Proxies with Nginx Proxy Manager

    Introduction

    In the previous article, we pointed out some problems with our deployments:

    • Each deployment is being served on a separate, non-standard web port
    • Some of our deployments are throwing browser warnings for using self-signed certs
    • Some of our deployments are not getting encrypted (!)

    The way we fix these problems is with a reverse proxy . A reverse proxy is a web server that sits in front of other webservers, acting like a bouncer. It will encrypt outgoing traffic, it can set additional security features, and it can even redirect traffic based on the domain you want to access. … You know, like how bouncers do.

    For this purpose, we will be installing the very excellent nginx proxy manager .

    TL;DR

    In this article, we will:

    • Deploy Nginx Proxy Manager as a reverse proxy manager
    • Show how to reverse proxy docker services, as well as use security features such as IP whitelisting

    Installing Nginx Proxy Manager

    To start with we need an extra network for the proxy to sit on.

    • In Portainer, head to networks and Add Network . Create a network named reverseproxy-nw . Create .

    Как разместить сайт на Nginx. Как установить NGINX на Ubunt. 04 и разместить сайт

    NGINX — это программное обеспечение для веб-серверов с открытым исходным кодом. Вы можете развернуть NGINX как автономный веб-сервер или как прокси-сервер перед другими веб-серверами. По сути, обратный прокси-сервер. Nginx — это один из лучших веб-серверов для размещения веб-сайта с высоким трафиком.

    В этом инструкции мы установим NGINX  в качестве автономного веб-сервера на  Ubuntu 20.04 .

    Установка NGINX на Ubuntu 20.04

    Прежде чем приступить к установке NGINX. Сначала запустите команду sudo apt-get update , чтобы получить информацию о новых и обновленных пакетах Ubuntu .

    Nginx доступен в репозитории пакетов Ubuntu . Поэтому Nginx очень лего установить с помощью следующей команды:

    $ sudo apt-get install nginx

    Проверьте состояние службы NGINX

    Давайте сделаем быструю проверку, чтобы подтвердить статус сервиса NGINX. Для этого выполните следующую команду:

    $ sudo systemctl status nginx

    Проверьте состояние службы NGINX

    Вывод приведенной выше команды подтверждает, что NGINX  активен и работает .

    Если вы получаете сообщение о том, что NGINX неактивен, не запущен или не работает. Тогда вы можете вручную запустить службу NGINX. Для этого выполните следующую команду:

    $ sudo systemctl start nginx

    Чтобы проверить установленную версию Nginx, запустите:

    $ sudo dpkg-l nginx

    Провера версии Nginx на Ubuntu

    Проверьте версию Nginx на Ubuntu

    Эти данные показывают , что установлен nginx версии 1.18.0 . На момент написания статьи это последняя версия для Ubuntu 20.04 .

    Тестирование веб-сервера NGINX

    После того когда вы узнали что служба NGINX активна и работает. Требуется протестировать веб-сервер. Для этого откройте свой браузер и введите IP-адрес вашего сервера на котором установлен NGINX. Например http://192.168.1.100

    Вы должны увидеть веб-страницу по умолчанию под названием « Добро пожаловать в nginx! “

    Веб-страница по умолчанию NGINX

    Теперь требуется, убедится, что соответствующий порт открыт в вашем брандмауэре . Например, если вы включили Брандмауэр UFW на своем сервере Ubuntu. Вы должны попытаться обновить правила брандмауэра. Для того чтобы разрешить NGINX общаться по порту 80 и/или 443 следующим образом.

    Команда разрешает NGINX работать на порту 80:

    $ sudo ufw allow 'Nginx HTTP'

    Команда разрешает NGINX работать на порту 443:

    $ sudo ufw allow 'Nginx HTTPS'

    Настройка серверных блоков NGINX

    Если вы хотите разместить несколько веб-сайтов на одном веб-сервере NGINX, то вам нужно будет настроить серверные блоки. Серверные блоки также называются виртуальными хостами (в основном в Apache).

    NGINX предварительно сконфигурирован только с одним блоком сервера. И именно там хранятся сведения о конфигурации для веб — сайта по умолчанию ( ) ( l).