将PNG文件请求传递给Nginx中的PHP脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将PNG文件请求传递给Nginx中的PHP脚本相关的知识,希望对你有一定的参考价值。
这是我需要做的 - 我需要我的服务器提供一组图像的两个版本。第一组图像是真实的PNG文件,它们位于我服务器上的文件夹中,称之为/realimages
。第二组图像实际上并不存在。当他们被请求时,我想要获取所请求的图像文件名,例如
https://example.com/nosuchimage/img1.png
通过坐落在/nosuchmage
文件夹内的index.php脚本生成图像(或者如果更容易的话,在其他地方生成)。
该脚本执行以下操作
- 从
/realimages
文件夹中获取相关图像 - 使用PHP GD生成背景
- 在背景上叠加相关图像
- 提供结果
该脚本已编写完整,功能齐全。我不知道的是如何强制所有PNG图像请求到/nosuchimage
文件夹被重定向到该脚本,原始请求作为脚本参数传递。
我知道这对nginx来说是一个相对简单的配置问题,涉及编写重写规则。然而,NGINX重写对我来说仍然是一个黑色的艺术。希望有人能够告诉我重写规则应该是什么。
答案
要重定向某个文件夹的所有图像,只需使用配置文件中的以下代码即可。
在我的情况下,我将使用默认文件。 /etc/nginx/sites-available/default
location ~ /realimages/(.+.png)$ {
return 302 $scheme://$server_name/nosuchimage/$1;
}
// Access: http://www.example.com/images/valdeirpsr.png (Exists & Redirect to /nosuchimage/valdeirpsr.png)
// Access: http://www.example.com/images/valdeirpsr2.png (Not Exists & Redirect to /nosuchimage/valdeirpsr2.png)
要仅重定向特定文件夹中未找到的图像,只需使用配置文件中的以下代码即可。
location ~ /realimages/(.+.png)$ {
error_page 404 $scheme://$server_name/nosuchimage/$1;
}
// Access: http://www.example.com/images/valdeirpsr.png (Exists & Show Image)
// Access: http://www.example.com/images/valdeirpsr2.png (Not Exists & Redirect to /nosuchimage/valdeirpsr2.png)
以上是关于将PNG文件请求传递给Nginx中的PHP脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何在将请求传递给上游服务器之前删除 Nginx 中的客户端标头?
Lua with nginx in openresty:如果在 redis 缓存中找不到数据,则将请求传递给 FastCGI