nginx 中的多个位置不起作用 - 错误 404

multiple location in nginx is not working - error 404

我正在尝试 运行 两个 nodejs 应用程序,一个在默认路径 (/) 上,另一个在 /api ,我尝试了多种方法,但多个位置无法使用 nginx ,只有根域 (/) 工作正常,我分配哪个应用程序并不重要(第二个或第一的)。如果我尝试访问 (/api) 它 return 404 未找到并且 (/) 路径有效美好的。 这是我的默认 nginx 文件

server {
    listen 80 default_server;
    listen [::]:80 default_server;


    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name example.com;

    location /api {
            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 $uri/ =404;
        }

    location / {
        proxy_pass http://localhost:8081;
        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 $uri/ =404;
    }
}

我做错了什么。任何帮助都会得到帮助。谢谢

经过大量谷歌搜索并尝试了很多方法后,我找到了解决方案,我没有使用 React 应用程序作为动态加载,而是生成了一个 React 构建并将该构建存储在特定位置,并在 main 上提供这些构建文件使用 nginx 的位置。

location / {
            root /home/user/gui/build;
            try_files $uri /index.html;
        }
   
location /api/ {
        proxy_pass http://localhost:3002/;
        proxy_redirect off;
        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;
    }

location /static/ {
        root  /home/user/gui;
        try_files
            /gui/build$uri
            =404;
    }

所以这里 (/) 将尝试 root 文件夹中的文件 (/home/user/gui/build) 并且我们有 index.html 由 react build 生成,这个 index.html 将被提供.现在下一个问题是为反应生成的静态文件提供服务,所以我创建了一个单独的位置 (/static/) 与 / 路径相同的逻辑。