【问题标题】:Passing PNG file request to PHP scrpt in Nginx将PNG文件请求传递给Nginx中的PHP脚本
【发布时间】:2017-12-20 17:58:24
【问题描述】:

这是我需要做的 - 我需要我的服务器提供一组图像的两个版本。第一组图像是真实的 PNG 文件,位于我服务器上的一个文件夹中,称为 /realimages。第二组图像实际上并不存在。当他们被请求时,我想使用请求的图像文件名,例如

https://example.com/nosuchimage/img1.png

通过位于/nosuchmage 文件夹中的 index.php 脚本生成图像(如果更容易,也可以在其他位置)。

该脚本执行以下操作

  • /realimages 文件夹中提取相关图像
  • 使用 PHP GD 生成背景
  • 在背景上叠加相关图像
  • 提供结果

该脚本已经编写完毕并且功能齐全。我不知道的是如何强制将所有 PNG 图像请求到 /nosuchimage 文件夹以重定向到该脚本,并将原始请求作为脚本参数传递。

我知道这样做是一个相对简单的 NGINX 配置问题,其中涉及编写重写规则。然而,NGINX 重写对我来说仍然是一门很黑的艺术。希望这里的人能够告诉我重写规则应该是什么。

【问题讨论】:

    标签: nginx url-rewriting


    【解决方案1】:

    要重定向某个文件夹的所有图像,只需在配置文件中使用以下代码即可。

    就我而言,我将使用默认文件。 /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)
    

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      相关资源
      最近更新 更多