Я создал страницу WordPress с постоянной ссылкой http://domain.tld/health_status
для мониторинга работоспособности WordPress. К нему часто обращаются, поэтому я не хочу, чтобы эти запросы отображались в моем журнале доступа.
Основное «правило перезаписи» для всех страниц WordPress:
location / {
try_files $uri $uri/ /index.php?q=$args;
}
Теперь на том же уровне я попробовал
location /health_status {
access_log off;
#try_files $uri $uri/ /index.php?q=$args;
}
Из nginx документация по местонахождению:
Литеральные строки соответствуют начальной части запроса - будет использоваться наиболее точное совпадение
/health_status
более конкретен, чем /
, поэтому этот блок действует, когда я запрашиваю http://domain.tld/health_status
.
С try_files
закомментированная строка (как указано выше), запрос не отображается в журнале доступа, ура, но, очевидно, я просто получаю ошибку 404, потому что nginx не перенаправляет этот запрос в WordPress.
С try_files
активная линия, внутреннее перенаправление на WordPress ' index.php
происходит и /health_status
Страница WordPress отображается в браузере. Однако после внутреннего перенаправления location /health_status
блок больше не действует, и запрос попадает в журнал доступа.
Как решить эту проблему чисто? Должен ли я теперь добавить еще один блок, соответствующий фактическому /index.php?q=healthstatuswhatever
запрос, который происходит после внутреннего перенаправления?
Спасибо!
Вы должны использовать именованное местоположение для запросов, предназначенных для WordPress. Пример этого:
location ~ \.php$ {
try_files $uri =404;
fastcgi_ ### fastcgi params and other config for PHP go here
}
location @wordpress {
try_files $uri /index.php;
fastcgi_ ### fastcgi params and other config for WP go here
}
location / {
try_files $uri $uri/ @wordpress;
}
location /health_status {
access_log off;
try_files $uri $uri/ @wordpress;
}
Этот пример неполный и может быть небезопасным; он только демонстрирует, как можно решить вашу проблему. Убедитесь, что ваш веб-сервер надежно защищен.