这是我的配置:
server {
root /app/public;
charset utf-8;
server_tokens off;
location / {
try_files $uri @app;
}
location = /php-health {
access_log off;
}
location = /nginx-health {
access_log off;
default_type text/plain;
return 200 "Nginx OK";
}
location @app {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /app/index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
问题是,当我把那个location = /php-health
块放在那里时,Nginx 不再通过 将请求转发到我的 PHP 应用程序location @app
。我以为,由于没有语句,return
它会“失败”,@app
但这只是 404。
正确的做法是什么?
答案1
可能有或多或少有点黑客的方法可以做到这一点,但更改设置access_log
是您可以安全地执行的操作之一if
。
例如:
location @app {
if ($uri = /php-health) {
access_log off;
}
#... the PHP directives ...
答案2
这是一个肮脏的伎俩,但你能尝试一下吗?
location = /php-health {
access_log off;
try_files /dev/null @app;
}