Как сконфигурировать обратный прокси Nginx для работы с двумя приложениями через 443 порт с применением SSL?

  • 8 августа 2023 г. 19:32
Ответы на вопрос 3
Вы можете использовать Nginx как обратный прокси-сервер для направления запросов на два отдельных веб-приложения на заданном порту. Примерно так вы можете настроить SSL и использовать Nginx для проксирования поддоменов на два разных приложения на одном сервере:

1. Установите NGINX:

```
sudo apt-get update
sudo apt-get install nginx
```

2. Создайте два конфигурационных файла, каждый для своего приложения, в `/etc/nginx/sites-available`

Файл `/etc/nginx/sites-available/app1`

```
server {
    listen 443;
    server_name app1.example.com;

    ssl_certificate /etc/nginx/ssl/app1.pem;
    ssl_certificate_key /etc/nginx/ssl/app1.key;

    location / {
        proxy_pass http://localhost:3000; # URL к вашему приложению с портом
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
```

Файл `/etc/nginx/sites-available/app2`

``` 
server {
    listen 443;
    server_name app2.example.com;

    ssl_certificate /etc/nginx/ssl/app2.pem;
    ssl_certificate_key /etc/nginx/ssl/app2.key;

    location / {
        proxy_pass http://localhost:4000; # URL к вашему приложению с портом
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
```

3. Сделайте эти конфигурации доступными:

```
sudo ln -s /etc/nginx/sites-available/app1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app2 /etc/nginx/sites-enabled/
```

4. Проверьте наличие ошибок в конфигурации и перезапустите NGINX:

```
sudo nginx -t
sudo systemctl restart nginx
```

Этот пример предполагает, что вы используете поддомены app1.example.com и app2.example.com и ваши приложения слушают 3000 и 4000 порты соответственно. Если в вашем случае другой адрес или порт - просто замените их в приведенном примере. Также будьте уверены, что указали правильные пути k .pem и .key файлам для SSL сертификатов.
Убедитесь, что в вашем конфигурационном файле отсутствуют настройки для reverse proxy. Если они есть, то нужно их удалить, чтобы избежать конфликтов. Кроме того, у вас возможно проблема с прослушиванием порта 443 на всех IP-адресах. Рекомендуется проверить и исправить эту проблему.

Также обратите внимание, что аргумент "backlog=4096" должен быть указан только один раз в разделе "listen ...;". Использование ".include .../custom/certbot" также должно быть указано только один раз. Если необходимо, скопируйте его содержимое и вставьте в каждый файл "domainN.conf". Кроме того, проверьте наличие расширений у файлов, возможно, они отсутствуют.
Убедитесь, что в вашем конфигурационном файле есть настройки reverse proxy. В противном случае может возникнуть ошибка. Также стоит проверить, не пытаетесь ли вы прослушивать порт 443 дважды для всех IP адресов.

Напомню, что аргумент "backlog=4096" следует указывать только один раз в блоке "listen ...;". Если вы используете файл включений ".include .../custom/cerbot", удостоверьтесь, что он указан только один раз. Еще стоит убедиться, что файлы имеют правильные расширения.
Похожие вопросы