Как настроить проксирование в файле конфигурации nginx на фронтенд сервере?

Как настроить Nginx для разграничения работы frontend и backend частей проекта, где backend работает на порту 8000, а frontend - на порту 3000, используя Docker?
  • 14 марта 2024 г. 18:39
Ответы на вопрос 1
Для настройки проксирования в файле конфигурации nginx на фронтенд сервере, следует выполнить следующие шаги:

1. Откройте файл конфигурации nginx (обычно находится в директории /etc/nginx/nginx.conf или /etc/nginx/sites-available/default).
2. Добавьте следующий блок конфигурации для проксирования запросов на backend сервер:
```
server {
    listen 80;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $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;
    }
}
```
3. Перезапустите nginx, чтобы изменения вступили в силу: `sudo systemctl restart nginx`

Чтобы настроить Nginx для разграничения работы frontend и backend частей проекта, работающих на разных портах с помощью Docker, можно воспользоваться следующим примером:

1. Создайте Docker контейнеры для frontend (на порту 3000) и backend (на порту 8000).
2. Создайте Docker сеть, к которой присоедините оба контейнера:
```
docker network create mynetwork
docker network connect mynetwork frontend_container
docker network connect mynetwork backend_container
```
3. В файле конфигурации nginx (который будет также находиться в Docker контейнере) укажите проксирование на backend сервер по его имени внутри сети Docker:
```
server {
    listen 80;

    location / {
        proxy_pass http://backend_container:8000;
        proxy_set_header Host $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;
    }
}
```
4. Создайте Docker контейнер для nginx с монтированием файла конфигурации и присоединением к сети:
```
docker run -d --name nginx_container -v /путь/к/файлу/nginx.conf:/etc/nginx/nginx.conf --network mynetwork nginx
```
5. Теперь nginx будет проксировать запросы с порта 80 на frontend контейнер, а запросы на backend будут проксироваться на контейнер с backend на порту 8000.

Следует помнить, что в приведенных примерах необходимо подставить реальные имена контейнеров и порты, а также убедиться, что контейнеры имеют доступ друг к другу внутри одной Docker сети.
Похожие вопросы