Welcome! Log In Create A New Profile

Advanced

nginx rewrite does not work without "permanent" directive

Alexander Trofimchouk
December 15, 2017 07:50AM
Hello!

Please would you mind helping me.

My nginx rewrite works only if I add "permanent" directive. Without it there
is no rewrite seen even in browser's network log.

I have an image cache system which works this way:

- there is a folder for uploaded images ( )

- folder for small thumbnails of uploaded images ( )

- php script (Symfony controller).

If the user requests not yet existing thumbnail for already uploaded image,
than the php script is called and it generates a thumbnail and stores it in
a corresponding folder.

For example: User requests http://site.com/files/imagecache/thumb/1.jpg,
Nginx tries to find the file or redirects to
http://site.com/www2/web/app_dev.php/image/cache?path=thumb/1.jpg

But instead I get 404 not found /files/imagecache/thumb/1.jpg - this message
is provided by Symfony (PHP), not by nginx itself.

If I add "permanent" I get Symfony controller output in browser - which is
OK. What did I do wrong?



Full nginx config with folders, symfony config and ordinary php config
follows.



Thank you in advance!



server {

..
root /home/anima/projects/sfedu/sfedu-php;

....

# SYMFONY DEV

location ~ ^/www2/web/(app_dev|config)\.php(/|$) {

fastcgi_pass
unix:/run/php/php7.0-fpm.sock;

fastcgi_split_path_info
^(.+\.php)(/.*)$;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME
$realpath_root$fastcgi_script_name;

fastcgi_param DOCUMENT_ROOT
$realpath_root;

}

# PROD

location ~ ^/www2/web/app\.php(/|$) {

fastcgi_pass
unix:/run/php/php7.0-fpm.sock;

fastcgi_split_path_info
^(.+\.php)(/.*)$;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME
$realpath_root$fastcgi_script_name;

fastcgi_param DOCUMENT_ROOT
$realpath_root;

internal;

}

location ~ ^/www2/web {

allow all;

try_files $uri /www2/web/app.php$is_args$args;

}

location ~ ^/www2 {

deny all;

}

# END OF SYMFONY BLOCK



location ~ (\.php$|\.php/|\.php\?) {

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;



set $path_info "";

set $real_script_name $fastcgi_script_name;

if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {

set $real_script_name $1;

set $path_info $2;

}

fastcgi_param SCRIPT_FILENAME
$document_root$real_script_name;

fastcgi_param SCRIPT_NAME $real_script_name;

fastcgi_param PATH_INFO $path_info;

fastcgi_param PATH_TRANSLATED
$document_root$real_script_name;

}



location /files/imagecache {

root /home/anima/projects/http-upload;

try_files $uri @imagecache;

}



location /files {

root /home/anima/projects/http-upload;

}



location @imagecache {

rewrite ^/files/imagecache/(.*)$
/www2/web/app_dev.php/images/cache?path=$1 permanent; #Here should be no
"permanent"

}



}





Regards,

Alexander Trofimchouk.





_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

nginx rewrite does not work without "permanent" directive

Alexander Trofimchouk December 15, 2017 07:50AM

Re: nginx rewrite does not work without "permanent" directive

Francis Daly December 15, 2017 08:20AM

Re: nginx rewrite does not work without "permanent" directive

Александр Трофимчук December 15, 2017 09:34AM

Re: nginx rewrite does not work without "permanent" directive

Francis Daly December 15, 2017 12:30PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 129
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready