应如何为 MERN 应用配置 sites-available 中的 Nginx‘默认’文件?

应如何为 MERN 应用配置 sites-available 中的 Nginx‘默认’文件?

我正在部署 MERN 应用程序,想知道应如何设置“默认”配置文件etc/nginx/sites-available以使服务器、客户端和 Mongo 数据库正常工作?

我在 Digital Ocean 上使用 Ubuntu 机器。我使用 Pm2 设置运行 server.js,运行良好。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这个文件中没有地址。虽然这会产生最少的错误,并且应用程序会在上述配置下在屏幕上闪烁,但在控制台中,我当然会收到“无法读取未定义的 ____”的错误。

我尝试的另一个方法是“流”。我显然不知道这个文件去哪里了,因为它似乎不属于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 文档。

感谢您的阅读!

答案1

您根本不应该编辑默认server块。您应该server在 中的单独配置文件中创建自己的块sites-available

nginx 附带的默认设置部分是为了作为示例,部分是为了捕获未指向您网站主机名的请求。

说到这,出于多种原因,您应该使用主机名而不是 IP 地址来服务您的网站。

您没有流式传输音频或视频,因此您stream根本不应该使用。

从您的描述来看,您的应用程序似乎有问题。您应该回去调试应用程序,而不是对 nginx 进行一些操作,因为这些操作在最好的情况下不会产生任何效果,在最坏的情况下会破坏您的网站。

相关内容