1
Не получается получить доступ к приложению React через основной IP-адрес
После запуска команды npm start и node server.js не удается получить доступ к React-приложению по IP-адресу и порту. Приложение настроено на работу через Nginx на сервере Ubuntu 22.04. Доменные серверы уже добавлены в настройки DNS. В чем может быть проблема?
Версии программ:
ОС: Ubuntu 22.04 x64.
Node.js: Версии 18.13.0.
Nginx: Версии 1.22.0.
Конфигурация Nginx:
server {
listen 80 default_server;
server_name _;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
try_files $uri /index.html;
}
}
Мои действия:
1. Установил Nginx:
sudo apt-get update
sudo apt-get install nginx
2. Изменил конфигурацию Nginx:
sudo nano /etc/nginx/sites-available/default
3. Проверил конфигурацию и перезапустил Nginx:
sudo nginx -t
sudo systemctl restart nginx
Ответы
Дмитрий Иванов
(Изменено)
Проблема может быть вызвана следующими причинами:
1. Nginx неправильно настроен.
2. Доступ блокирует фаервол.
3. Проблема с React-приложением.
Возможные решения:
1. Если проблема в конфигурации Nginx:
Откройте для редактирования файл конфигурации Nginx /etc/nginx/sites-available/default. Например так:
$ sudo nano /etc/nginx/sites-available/defaultИзмените блок описания конфигурации сервера, чтобы он выглядел примерно так:
server {listen 80;
server_name www.;
root /var/www//build;
index index.html;
}
После сохранения конфигурации Nginx проверьте её на ошибки:
sudo nginx -tУстраните ошибки, если они есть.
Если ошибок нет, то перезапустите Nginx:
sudo systemctl restart nginxЕсли проблему не удалось решить, то просмотрите логи ошибок Nginx и пришлите их сюда чтобы можно было посоветовать решения.
sudo tail -f /var/log/nginx/error.log2. Если проблема с firewall:
Если используете ufw, то решение будет выглядеть так:
Разрешите Nginx в firewall.
sudo ufw allow 'Nginx Full'Удалите правило, которое ограничивает доступ только к порту 80:
$ sudo ufw delete allow 'Nginx HTTP'Перезапустите ufw для применения правил:
sudo ufw reload3. Если проблема в приложении:
Запустите приложение:
cd /home//npm start
Убедитесь, что приложение доступно:
curl -I http://localhost:3000Если приложение возвращает корректный ответ, значит оно работает правильно и проблема, возможно, в настройках Nginx или сети.
Если приложение не отвечает, убедитесь, что оно слушает порт 3000:
sudo lsof -i :3000Если приложения нет в списке слушающих порт, то перезапустите его и проверьте конфигурацию.
Александр Смирнов
(Изменено)
Спасибо за ответ.
Буду пробовать.