Назад | Перейти на главную страницу

Как следует настроить мой файл Nginx по умолчанию на доступных сайтах для приложения MERN?

Я развертываю приложение MERN и задаюсь вопросом, как файл конфигурации по умолчанию в etc/nginx/sites-available нужно настроить для работы сервера, клиента и базы данных Mongo?

Я использую машину Ubuntu в Digital Ocean. У меня server.js работает с настройкой Pm2 и работает нормально. Проверки статуса Nginx и Mongo возвращаются нормально. У меня проблемы с конфигурацией.

Вот одна из конфигураций default Я попытался.

server {
    listen 80;
    server_name 138.197.173.139;
    root /var/www/MERN_App/client/build;

    error_page 404 /index.html;

    location / {
            add_header Cache-Control no-cache;
            try_files $uri $uri/ /index.html;
    }

    location /api/ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Host $remote_addr;
            proxy_pass http://138.197.173.139:5002;
    }
}

Конечно, это не показывает никаких данных из базы данных Mongo, потому что адрес localhost:27017 в этом файле нигде нет. Хотя это дает наименьшее количество ошибок, и приложение мигает на экране с приведенной выше конфигурацией, но в консоли, конечно же, я получаю ошибки типа «не могу прочитать ____ из undefined».

Еще я попробовал «поток». Я, очевидно, не знаю, куда идет этот файл, потому что, похоже, он не принадлежит sites-available.

stream {
        upstream stream_mongo_backend {
                server 138.197.173.139:27017;
                }

        server {
                listen 80;
                server_name 138.197.173.139;
                root /var/www/MERN_App/client/build;

                error_page 404 /index.html;

                location / {
                        add_header Cache-Control no-cache;
                        try_files $uri $uri/ /index.html;
                }

                location /api/ {
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-Proto $scheme;
                        proxy_set_header X-Forwarded-For $remote_addr;
                        proxy_set_header X-Forwarded-Host $remote_addr;
                        proxy_pass http://138.197.173.139:5002;
                }
        }
}

Эта конфигурация не позволяет мне перезапустить nginx, и в журнале появляется ошибка «поток не может идти сюда».
Я не знаю, есть ли какая-то комбинация файла в новом каталоге, который я должен создать, под названием «поток» и конфигурация в sites-available или что-то совсем другое.
Если у вас есть хорошее руководство или видео по настройке этих файлов, я был бы признателен, потому что я считаю все это непрозрачным и, должно быть, слишком толстым для документации Nginx.

Спасибо за чтение!

Вы не должны редактировать значение по умолчанию server блокировать вообще. Вместо этого вы должны создать свой собственный server блок, в отдельном файле конфигурации в sites-available.

По умолчанию, поставляемый с nginx, частично используется в качестве примера, а частично - для перехвата запросов, которые не направлены на имя хоста вашего веб-сайта.

Кстати, вы должны использовать имя хоста вместо IP-адреса для обслуживания своего веб-сайта по целому ряду причин.

Вы не транслируете аудио или видео, поэтому вам не следует использовать stream вообще.

Судя по вашему описанию, у вашего приложения возникли проблемы. Вам следует вернуться к отладке вашего приложения, а не делать с nginx что-то, что в лучшем случае не будет иметь никакого эффекта, а в худшем - сломает ваш сайт.