Рейтинг:0

Перезапись регулярного выражения nginx не работает для php-скрипта

флаг cn

Я пытаюсь заблокировать выполнение PHP-скрипта в нескольких папках для установки WordPress, но Nginx доставляет мне неприятности.

местоположение = /wp/wp-includes/category.php {
    отрицать все;
}

Я могу заблокировать отдельный скрипт, используя точное совпадение, но когда я использую регулярное выражение, это не работает.

расположение ~* /wp/wp-includes/.*\.php$ {
    отрицать все;
}

Я не уверен, что я делаю неправильно?

РЕДАКТИРОВАТЬ

У меня есть следующие правила после вышеуказанных правил:

место расположения / {
    error_page 418 = @cachemiss;
    # Разрешить POST на статических страницах. Будет искать со мной ошибку
    error_page 405 = 200 $uri;
    recursive_error_pages включено;

    # обход кеша для общих строк запроса
  если ($arg_s != "") { return 418; } # поисковый запрос
  если ($arg_p != "") { return 418; } # запросить пост/страницу по ID
  если ($arg_amp != "") { return 418; } # тест усилителя
  если ($arg_preview = "true") { return 418; } # предварительный просмотр поста/страницы

  if ($http_cookie ~* "(wordpress_logged_in_|wp\-postpass_|woocommerce_items_in_cart|woocommerce_cart_hash|wptouch_switch_toogle|comment_author_|comment_author_email_)") {
    вернуть 418;
  }
  # обход кэширования почтовых запросов
  если ($ request_method = POST ) {
    вернуть 418;
  }

  если (!-f "$rocket_file") {
    вернуть 418;
  }

  пометка включена;
  try_files "$rocket_url" $uri $uri/ /index.php$is_args$args;
}


местоположение @cachemiss {
  try_files $uri $uri/ /index.php$is_args$args;
}
флаг us
Пожалуйста, покажите вывод `nginx -T`, чтобы мы могли увидеть полную конфигурацию nginx.
Ivan Shatsky avatar
флаг gr
Места совпадения регулярных выражений @Maximus проверяются от первого до последнего. Для обработки запроса выбирается первое совпадающее местоположение. Наличие этого местоположения __после__ обычного PHP-обработчика `location ~ \.php$ { ... }` сделает его недоступным - вам нужно поместить его __перед__ обработчиком PHP по умолчанию. С другой стороны, точное соответствие местоположения (`location = { ... }`) имеют больший приоритет над любым другим типом местоположений, поэтому ваше первое местоположение будет работать независимо от того, где оно будет размещено.
флаг cn
@IvanShatsky У меня есть это место в верхней части файла, а затем правило перезаписи wordpress.
Ivan Shatsky avatar
флаг gr
@Maximus Что вы подразумеваете под «правилом перезаписи wordpress»?
флаг cn
@IvanShatsky Я только что обновил свой вопрос. Спасибо за помощь.
Ivan Shatsky avatar
флаг gr
@Maximus Я не вижу ничего, что могло бы быть причиной, но я не вижу ни обработчика PHP (обычно `location ~ \.php$ { ... }` или что-то подобное). Вы уверены, что он находится под данным фрагментом конфигурации, а не над ним?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.