Hi Paul,

If that server block is only serving Perl and nothing else at all, you should be fine to just strip out anything PHP-extension request-like without using the if statement. Judging with what you've stated, and without having seen access/error logs, it might be best to simply use the following for the Perl server configuration block:

location ~ \.php$ {  return 444; }

It may also be pertinent to utilize `access_log off; ` and `log_not_found off;` within that location clause if you are also having resource/log-storage issues.

Additionally, if the bogus PHP requests are coming from clients not sending a user agent (which from my POV, has been a common theme with probing bots lately), you could also configure this within the overall server {} block:

if ($http_user_agent = "") {  return 444; }

Regards,
Brett


------ Original Message ------
From "Paul" <p...@stormy.ca>
To nginx@freenginx.org
Date 08/28/2025 07:13:26 P
Subject Using 444

I'm looking for advice, please. Using Nginx v1.18.0 (Ubuntu) which is "old" but 
security updated by Canonical, rock solid and very fast, for several static html sites 
and as proxy to a couple of other sites using python or perl. Total ~250k requests/day

Recently logs have started showing ~10k php requests in rapid bursts. On a 
proxy to a perl box, this is a serious slow down

I've added the following, appears to work well

location ~ \.php$ {
        if ($request_method = GET) {
                return 444; # Drop
        }
}

I'm considering editing to  ^(GET|HEAD|POST)$) {

Any thoughts, downsides, recommendations?

Tnx and warmest regards to all,
Paul

Reply via email to