node.js - nginx 从另一台服务器提供静态文件

标签 node.js nginx amazon-ec2 proxy

我有一个托管在 ec2 服务器上的 Nodejs 应用程序。目前我让 nginx 代理应用程序并从同一台机器提供静态文件。

出于安全原因,我正在实现另一台服务器,该服务器仅用作代理,主应用程序将位于另一个实例上,并且仅具有来自单个 IP 的内部。

将请求代理到内部实例很容易,但我不知道如何提供位于另一台服务器上的静态文件...

    location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|med$
        root /usr/src/www/static;
        access_log off;
        expires 24h;
    }

是否可以执行以下操作?

     location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|med$
        root http://172.10.10.10/static;
        access_log off;
        expires 24h;
    }

如果是这样,我是否应该在应用程序上实现另一个 nginx 服务器来提供文件,并简单地从新服务器进行代理?

最佳答案

在 nginx 的上下文中,静态文件始终需要位于本地文件系统上。因此,您需要对“应用程序机器”执行 proxy_pass。您可能只想将应用程序放在第二台服务器上的 nginx 后面,这样您的“代理”机器就只执行一个 proxy_pass,它不需要知道或关心什么是静态的、什么不是(除非您出于安全原因需要在顶级代理上将它们分开)。

这还有一个额外的好处,即您可以轻松地在应用程序层中添加更多服务器并在它们之间进行负载平衡,而无需更改代理级别,除了将静态 proxy_pass 转换为上游(或使用“下一个服务器”)之外。

关于node.js - nginx 从另一台服务器提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35363944/

相关文章:

node.js - 以编程方式获取剩余的免费动力时间

node.js - 如何在 package.json 中强制嵌套 npm 依赖

apache - Node.JS前面反向代理的优点

c# - 如何在 Ubuntu 上使用 NginX 提供 Blazor 应用程序

amazon-web-services - 为什么 AWS ELB(弹性负载均衡器)有时会立即返回 504(网关超时)?

javascript - 如何使用 Puppeteer 等待事件触发的页面重新加载?

javascript - 环回推送数组

linux - 从端口 80 删除 nginx 并添加 apache

node.js - 如何使用 node.js 连接到 ElastiCache 集群

linux ami nginx sites_enabled 丢失