@djok2142

Как в связке Nginx + Apache добавить ограничение limit_req только для PHP скриптов?

Подскажите пожалуйста как в связке Nginx + Apache Mod Rewrite добавить ограничение limit_req только для страниц сайта которые являются php скриптом?
Пробовал в конфиг nginx сайта, добавить так

location ~ \.php$ {
	limit_req zone=two burst=10 nodelay;
	limit_req_status 429;
}

Но тогда страницы сайта что заканчиваются на .php перестают работать, выдают ошибку 404.
А для остальных страниц которые используют Apache Mod Rewrite (site.com/drink/pepsi/) limit_req для них не работает.

Прилагаю конфиг сайта созданyый панелью HestiaCP:
limit_req_zone $binary_remote_addr zone=two:10m rate=10r/s;

server {
	listen      55.55.55.55:80;
	server_name my-site.com www.my-site.com;
	error_log   /var/log/apache2/domains/my-site.com.error.log error;

	include /home/admin/conf/web/my-site.com/nginx.forcessl.conf*;

	location ~ /\.(?!well-known\/|file) {
		deny all;
		return 404;
	}

	location / {
		proxy_pass http://55.55.55.55:8080;
		
		location ~ \.php$ {
			limit_req zone=two burst=10 nodelay;
			limit_req_status 420;
		}

		location ~* ^.+\.(css|htm|html|js|json|xml|apng|avif|bmp|cur|gif|ico|jfif|jpg|jpeg|pjp|pjpeg|png|svg|tif|tiff|webp|aac|caf|flac|m4a|midi|mp3|ogg|opus|wav|3gp|av1|avi|m4v|mkv|mov|mpg|mpeg|mp4|mp4v|webm|otf|ttf|woff|woff2|doc|docx|odf|odp|ods|odt|pdf|ppt|pptx|rtf|txt|xls|xlsx|7z|bz2|gz|rar|tar|tgz|zip|apk|appx|bin|dmg|exe|img|iso|jar|msi)$ {
			try_files  $uri @fallback;

			root       /home/admin/web/my-site.com/public_html;
			access_log /var/log/apache2/domains/my-site.com.log combined;
			access_log /var/log/apache2/domains/my-site.com.bytes bytes;

			expires    max;
		}
	}

	location @fallback {
		proxy_pass http://55.55.55.55:8080;
	}

	location /error/ {
		alias /home/admin/web/my-site.com/document_errors/;
	}

	include /home/admin/conf/web/my-site.com/nginx.conf_*;
}
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Эмммм,
location ~ \.php$ {
	limit_req zone=two burst=10 nodelay;
	limit_req_status 420;
	proxy_pass http://55.55.55.55:8080;
}

P.S. Стоп! location внутри location?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы