我有一个托管在 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/