NGINX 反向代理后面的 Node.js 应用程序的 POST 和 GET 请求出现 404

Mat*_*ner 2 nginx node.js

我有一个使用以下结构运行的 Ubuntu Web 服务器:

Nginx 反向代理 localhost:80,重定向到当前'/'有效的任意一个(带有 WordPress 站点的 apache 服务器,位于 localhost:8080)。

最近,我尝试在www.site.com/app或内部添加 Node.js 应用程序localhost:3000。我能够为 Node.js Web 应用程序的 HTML 和 CSS 提供服务,但是所有内部路由调用都处于 404ing,可能是因为 /app/ 的 URL 寻址。

IE。尝试命中/someendpoint404,因为 Node.js 从技术上讲是在localhost:3000( www.site.com/app) 上运行的。我应该像 ( www.site.com/app/someendpoint) 这样路由参数吗?

问题:由于我对 NGINX 配置的理解不好,来自 NODE.JS 的所有 POST/GET 调用都是 404ing。如何将此 GET 调用路由到 Node.js 服务器的实际位置(site.com/app/,localhost:3000)。

这是我的“ default”配置/etc/nginx/available_sites/.

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

     root /var/www/html;

     index index.php index.html index.htm index.nginx-debian.html;

     server_name www.*site*.name;

     location / {
         proxy_pass http://127.0.0.1:8080$request_uri;
         proxy_buffering on;
         proxy_buffers 12 12k;
         proxy_redirect off;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_set_header Host $host;
         try_files $uri $uri/ /index.php?q=$uri&$args;
     }

     #Currenly serving HTML, CSS of site, however node routes 404 
     location /app/ {
          proxy_pass http://localhost:3000/;
      }
 }
Run Code Online (Sandbox Code Playgroud)

我如何更新此 NGINX 配置文件以考虑主动尝试访问我的 apache 站点的路由而不是/app节点服务器的真实位置的节点端点?

任何帮助或想法都会很棒,作为个人项目的一部分,我已经在这个问题上停留了一段时间。

谢谢!

小智 5

请删除位置/块中的 try_files 语句,您的位置应如下所示......

  location / {
            proxy_pass    http://localhost:8080;
            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;
    }
Run Code Online (Sandbox Code Playgroud)