nginx getimagesize from local server: 403

Vincent M. mouseless at free.fr
Wed Aug 4 11:50:00 UTC 2021


I found the reason!

I have check and my files and folders are already with rights: 0755 for 
folders and 0644 for files.

I checked also the owner of the website and unfortunately I did some 
test and did not resolved the issue.

I have put a file aaa.jpg on my website root folder:

Locally this code is working fine:

list($imageWidth, $imageHeight) = 
getimagesize('http://local-mywebsite.com/aaa.jpg');
echo $imageWidth;

So I change the code to:

list($imageWidth, $imageHeight) = 
getimagesize('https://mywebsite.com/aaa.jpg');
echo $imageWidth;

and I get the error:
2021/08/04 11:33:00 [error] 2196869#2196869: *388196 FastCGI sent in 
stderr: "PHP message: PHP Warning: 
getimagesize(https://mywebsite.com/aaa.jpg): failed to open stream: HTTP 
request failed! HTTP/1.1 403 Forbidden

I change the right to 0777 to file and still have the 403.

I changed the owner of the file aaa.jpg to www-data and changed the 
owner of the website root folder to www-data as well but still have the 403.

On /etc/nginx/nginx.conf file I have:
user www-data;

I didn't know where to look at!

And unexpectedly I remembered that yesterday I added some rules to nginx 
to block bad bots. Which I didn't do locally.

I added this configuration rules:
https://github.com/mitchellkrogza/nginx-badbot-blocker 
<https://github.com/mitchellkrogza/nginx-badbot-blocker>

And took a look at it and notified this rules:

## Add here all hosts that should be spared any referrer checking.
## Whitelist all your own IPs in this section, each IP followed by a 0;
geo $bad_referer {
     127.0.0.1 0;
     111.111.111.111 0;
}

I added the comment for 127.0.0.1 and it's now working fine.

What is the line 111.1111.111.111 0 for ?

Do you have any advise on this rules added from 
https://github.com/mitchellkrogza/nginx-badbot-blocker ?

Thanks :)



Le 03/08/2021 à 21:14, Vincent M. a écrit :
>
> Hello all,
>
> I have a 403 error when trying to use the PHP function getimagesize on 
> nginx based web server:
>
> list($imageWidth, $imageHeight) = getimagesize($imagesSource['Main']);
>
> Where $imageSource['Main'] is like:
>
> https://mywebsite/include/php/render/canvas/VR/2/image/U35p/ver//bgColor/ffffff/widthMM/300/heightMM/388/aube-sunny.jpg
>
> It's an image generated by PHP-imagick module and is not locally 
> available. This image can be opened by a browser with no problem.
>
> To generate this image which go through 404. Nginx is configured like 
> that:
>
> error_page 404 = /url_rewriting.php;
> And in the file url_rewriting.php, we analyse the URL to see if it's 
> real 404 or an image which must be generated:
>
> if((isset($urlHash[2]) && $urlHash[2] === 'render')) {
> ...
>     header('Status: 200 OK', false, 200);
>     chdir('include/php/render/'.$_GET['render']);
>     require ('include/php/render/'.$_GET['render'].'/render_img.php');
>     exit;
> }
> All is working fine but not the getimagesize from my own server.
>
> What is strange is that it's working fine on my development 
> environment which has the same versions of nginx and PHP and pretty 
> the same configuration.
>
> It might a configuration issue or a right issue on a certain file but 
> I don't know where to check.
>
> Thank you,
> Vincent.
>
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20210804/9cb723e3/attachment.htm>


More information about the nginx mailing list