@ParseMeBaby

Как поднять два процесса в nginx?

Проблемы с деплоем. У меня есть VPS и Фулл-стек приложение: API на NodeJS и клиент на ReactJS. Поднял сервер на nginx, с помощью certbot получил SSL. Теперь у меня есть полноценный клиент под HTTPS и доменным именем. Но в моих мыслях он должен был взаимодействовать с апи, просто работающем на pm2, оказалось, что так нельзя, потому что процесс, поднятый через pm2 работает по незащищенному протоколу и клиент выдает ошибку:

xhr.js:210 Mixed Content: The page at 'https://my_domain_name.ru/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://ip:port/'. This request has been blocked; the content must be served over HTTPS.

Как действовать в этой ситуации ? Я подумал, что с помощью nginx можно поднять еще один (параллельный моему) процесс, где мой API будет работать на поддомене и это все обретет вид:

https://api.domain_name.ru/   -  API (with ssl)
https://domain_name.ru/  - CLIENT (with ssl)

Не понимаю, как разрешить данную проблему, если же я думаю в правильном направлении, то как это все осуществить?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
wapster92
@wapster92
Зачем все эти сложности с поддоменами, когда все относительно просто

upstream client-upstream {
    server    0.0.0.0:3000;
    keepalive 15;
}

upstream back-upstream {
    server    0.0.0.0:8000;
    keepalive 15;
}

server {
	listen ${HOST_IP}80;
    server_name ${PROJECT_NAME} www.${PROJECT_NAME};

    server_tokens off;

    root /var/www/prod/public;
    index index.php index.html index.htm;

    location / {
         proxy_pass http://client-upstream;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $http_upgrade;
         proxy_set_header Host $host;
    }
    
    location /api {
         proxy_pass http://back-upstream;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $connection_upgrade;
    }
}

В данном коде pm2 уменя поднимает и бэк и фронт на nuxt, со статичным бандлом реакта думаю все еще проще
nuxt крутится на 3000 порту бэк на 8000. При обращении на domain.ru/api nginx проксирует на 8000 порт в остальных случаях на 3000
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
paran0id
@paran0id
Умный, но ленивый
Один nginx с несколькими секциями server.
Ответ написан
Комментировать
martin74ua
@martin74ua
Linux administrator
это называется виртуальный хост.
поднимаете два виртуальных хоста, в каждом поднимаете прокси на ваши процессы....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы