Passing a special Magento URL to PHP-FPM

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Passing a special Magento URL to PHP-FPM

Palvelin Postmaster
I’m trying to learn how to pass specific Magento 1.x URLs such as this to a PHP-FPM backend.

/js/index.php/x.js?f=prototype/prototype.js,prototype/validation.js,mage/adminhtml/events.js,mage/adminhtml/form.js,scriptaculous/effects.js

All the nginx configs I’ve found (e.g. https://gist.github.com/rafaelstz/3bc3343017dd0118a577) include the same configuration blocks but does it actually work for the above mentioned URL structure?


    location @handler { ## Magento uses a common front handler
        rewrite / /index.php;
    }
 
    location ~ \.php/ { ## Forward paths like /js/index.php/x.js to relevant handler
        rewrite ^(.*\.php)/ $1 last;
    }
 
    location ~ \.php$ { ## Execute PHP scripts
        expires        off; ## Do not cache dynamic content
 
        fastcgi_pass   fpm_backend;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params; ## See /etc/nginx/fastcgi_params
    }
 
    location / {
        index index.html index.php; ## Allow a static html file to be shown first
            try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
            expires 30d; ## Assume all files are cachable
            if ($request_uri ~* "\.(png|gif|jpg|jpeg|css|js|swf|ico|txt|xml|bmp|pdf|doc|docx|ppt|pptx|zip)$") {
                expires max;
            }
 
        # set fastcgi settings, not allowed in the "if" block
        include /usr/local/etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$; #this line
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_param SCRIPT_NAME /index.php;
        fastcgi_param  MAGE_RUN_CODE default;
        fastcgi_param  MAGE_RUN_TYPE store;
 
        # rewrite - if file not found, pass it to the backend
        if (!-f $request_filename) {
            fastcgi_pass fpm_backend;
            break;
        }
    }




--
Palvelin.fi Hostmaster
[hidden email]

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: Passing a special Magento URL to PHP-FPM

Francis Daly
On Fri, May 15, 2020 at 09:49:38AM -0700, Palvelin Postmaster wrote:

Hi there,

> I’m trying to learn how to pass specific Magento 1.x URLs such as this to a PHP-FPM backend.
>
> /js/index.php/x.js?f=prototype/prototype.js,prototype/validation.js,mage/adminhtml/events.js,mage/adminhtml/form.js,scriptaculous/effects.js

> All the nginx configs I’ve found (e.g. https://gist.github.com/rafaelstz/3bc3343017dd0118a577) include the same configuration blocks but does it actually work for the above mentioned URL structure?
>

Are you asking whether you should try it; or are you reporting that
something does not respond as you want it to, when you do try it?

Your request, as far as choosing the location{} is concerned, is
/js/index.php/x.js

If your config is only what you show here, that will be handled in your
"location ~ \.php/" block, and it should all Just Work.

But the "e.g." link you show includes "location ~ \.js {", and *that* is
the location that will handle this request if you use that full config.
So it won't use fastcgi_pass at all.

Remove that stanza, or put it after the "\.php/" one.

Without testing it, I would expect that this part will probably work...

>     location ~ \.php$ { ## Execute PHP scripts
>         expires        off; ## Do not cache dynamic content
>  
>         fastcgi_pass   fpm_backend;
>         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
>         include        fastcgi_params; ## See /etc/nginx/fastcgi_params
>     }

...but I'm not sure about this next part:

>         # rewrite - if file not found, pass it to the backend
>         if (!-f $request_filename) {
>             fastcgi_pass fpm_backend;
>             break;
>         }
>     }

Maybe does not matter here; presumably the person who published the
config believes it is necessary.

Good luck with it,

        f
--
Francis Daly        [hidden email]
_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx