#node.js #mongodb #nginx
#node.js #mongodb #nginx
Вопрос:
У меня есть сервер, на котором я обслуживаю свои 2 приложения Node js, одно на https://example.com/app1 и еще один на https://example.com/app2 . Мне удалось заставить это работать, используя обратный прокси-сервер nginx, настраивая каждое приложение для запуска на одном порту и перенаправляя клиентов на каждый порт на основе вышеуказанных адресов.
Однако сейчас я сталкиваюсь с этой проблемой, когда я не могу сохранить какие-либо запросы POST в свой MongoDB. В частности, если я сделаю запрос POST из https://example.com/app1 Я получаю 405; если я отправлю POST-запрос от https://example.com:3000 все в порядке, и данные сохраняются в базе данных. Просто чтобы было понятно, порт 3000 — это порт, на котором запущено app1.
Может кто-нибудь мне помочь и указать, чего мне здесь не хватает? Я чувствую, что проблема здесь в том, что приложение работает на порту 3000 и отображается на порту 80, но данные с порта 80 не возвращаются на порт 3000?
Мой код обратного прокси-сервера:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name mysubdomain.domain.com www.mysubdomain.domain.com;
location /app1 {
rewrite ^/app1/(.*)$ /$1 break;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
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;
proxy_pass http://myIPaddress:3000;
}
}
Комментарии:
1. Я недостаточно хорошо знаю nginx, чтобы знать, каков правильный синтаксис, но я подозреваю, что вы говорите клиенту перенаправлять, а не напрямую перенаправлять запросы, а браузерные клиенты не перенаправляют запросы POST. Вы можете подтвердить это, открыв вкладку сеть в отладчике Chrome и посмотрев, получаете ли вы ответ 3xx из сообщения.
2. @jfriend00 это было 405. Я полагаю, что мне удалось решить эту проблему, изменив путь в fetch() на fetch(‘/app1/’, data). Я все еще хотел бы знать, есть ли для этого решение nginx.