从Nginx在某个目录的图像文件中运行php代码

Rol*_*hon 5 php nginx

我们最近迁移到了Nginx,我们还需要从某个目录/路径(www.domain.com/images/test.jpg)中传输以下htaccess配置,其中该图像文件包含一个我们想要的php代码。跑。

AddHandler application/x-httpd-ea-php56 .jpg .png .gif
Run Code Online (Sandbox Code Playgroud)

做了一些研究并在下面找到了示例,但是由于我对配置nginx并不十分了解,所以我不确定为什么它不起作用。

第一:

location ~ \.(php|jpg)$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)

第二:

location ~ .*\.php$ {
   root   /var/www/html/www.domain.com;
    if (!-f $request_filename) {
       rewrite ^/(.*)$ /index.php?q=$1;
       break;
    }
  include        fastcgi_params;
 #root           html;
 fastcgi_pass   127.0.0.1:9000;
 fastcgi_intercept_errors off;
 fastcgi_index  index.php;
 fastcgi_param  SCRIPT_FILENAME  /var/www/html/www.domain.com$fastcgi_script$
}
Run Code Online (Sandbox Code Playgroud)

我希望有人能帮助我。

更新08/09/2019-答案

location ~ ^/pathname/images/(.*)\.(jpg|png|gif)$
{
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)

Ray*_*y A 3

你能试试这段代码吗:

location ~* \.(jpg|jpeg|gif|png|bmp)$ {
    try_files $uri $uri/ /index.php$is_args$args;

    add_header        Cache-Control public;
    add_header        Cache-Control must-revalidate;
    expires           7d;
}
Run Code Online (Sandbox Code Playgroud)

您可能需要修改/index.php?$is_args$argstry_files 行上的部分,以便获得脚本的正确参数,因为您最初的问题没有清楚地显示您想要的参数是什么。

鸣谢nginx 通过 php 脚本提供图像