Share your ideas on our roadmap.

nginx: Allow multiple contexts for `custom_config`

Virtual hosts have a custom_config, which allows you to place custom configs. For nginx, this custom config is always placed in the server context. But sometimes, users need to place custom configs in other places, most notably in the location ~ \.php block that we add statically. A current case is as follows. Sometimes, directives need to be added to a specific PHP path, for example in the case of a Satis webhook:location = /webhook.php { auth_basic "off"; allow all; }Because nginx does not merge but overwrites locations, this causes the directives in location ~ \.php to no longer have any effect on /webhook.php.To work around that, the customer must duplicate the directives in location ~ \.php himself, but:These are 'implementation details'. I.e. they can change anytime, and are really our (internal) business.The socket path to the FPM pool must be hardcoded, which goes sideways when the virtual host's FPM pool is changed.The most elegant solution: turn custom_config from a text field of which the content is always placed in the server context, into an array with multiple possible values (such as location_php or generic).

William Edwards 4 months ago