首页 > 解决方案 > NGINX 将图像请求传递给动态服务器

问题描述

NGINX 在 NodeJS 服务器前面。NodeJS 应用程序生成动态内容(附加文件,例如 png),然后调用 Twilio SMS API (MMS msg),该 API 提供了附件的 URL。如何将这些 URL 请求传递到 NodeJS 服务器,因为它们不是 NGINX 中的静态内容。

示例:NodeJS 生成的 png 图像,并且必须可以通过在 NodeJS 前面的 NGINX 进入的 URL 立即被 Twilio API 访问。

标签: nginx

解决方案


如果 nodejs 为 PNG 生成 URL,并且这些 URL 至少在部分路径中彼此相似,则可以使用 regexp 将它们插入到 nginx 位置。但它应该在处理常规 PNG 的位置之前。

例如,如果您的静态 png 在位置

...

location ~ ^/.+\.(png|jpg|txt|css|js|ttf)$ {
  root /var/www/html;
}
...

并且您的nodejs在“/twilio/abcabc/123.png”之类的路径上生成png。比你可以在静态位置之前插入这个位置:

...

location ~ ^/twilio/.+\.png$ {
  proxy_pass http://nodejs;
}

location ~ ^/.+\.(png|jpg|txt|css|js|ttf)$ {
  root /var/www/html;
}

...

nginx 文档中描述了请求匹配位置的顺序:“然后按照它们在配置文件中出现的顺序检查正则表达式。”


推荐阅读