Как развернуть фронт-энд и бэк-энд приложения на одной машине с одним и тем же доменом, но разными портами?

У меня есть два приложения: одно для фронтенда, созданное с помощью ReactJS, и одно для бэкенда, созданное с помощью Django. У меня есть серверная машина, на которой я развернул оба приложения. Теперь я хочу использовать Nginx (из-за SSL) для размещения обоих приложений на одной машине с одним и тем же доменным именем, но порты разные. Я знаю, как это сделать для разных доменов или субдоменов, но у меня нет другого домена/субдомена со мной прямо сейчас. Поэтому я хочу спросить, как я могу достичь этого в Nginx? Например, мой FE использует порт 4173 & BE использует 8000, я могу настроить Nginx для обслуживания моего FE, но я получаю эту ошибку, Заблокирована загрузка смешанного активного содержимого, потому что мой FE, который является httpstrying для подключения к бэкэнду на порт 8000, который не является https.

Вот мой файл конфигурации nginx

server {
    listen 80;
    server_name camfire.pp.ua;

    # Перенаправлення HTTP на HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name camfire.pp.ua;

    # Шляхи до сертифікатів SSL
    ssl_certificate /etc/letsencrypt/live/camfire.pp.ua/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/camfire.pp.ua/privkey.pem;

    # Проксирування запитів до FrontEnd
    location / {
        proxy_pass http://localhost:4173;
        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;
    }

    # Проксирування запитів до BackEnd
    location /api {
        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;
    }
}

Любая помощь будет оценена по достоинству....

Вы можете этого добиться.

server {
    listen 80;
    server_name camfire.pp.ua;

    # Перенаправлення HTTP на HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}



server {
    listen 443 ssl;
    server_name camfire.pp.ua;

    # Шляхи до сертифікатів SSL
    ssl_certificate /etc/letsencrypt/live/camfire.pp.ua/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/camfire.pp.ua/privkey.pem;

    # Проксирування запитів до BackEnd
    location /api {
        proxy_pass http://localhost:8000;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade'
        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;
    }

    # Проксирування запитів до FrontEnd
    location / {
        proxy_pass http://localhost:4173;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade'
        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;
    }

    
}

Убедитесь, что вы не передаете номер порта во фронтенд-приложении при запросе к бэкенду.

Вернуться на верх