忽略nginx服务器的error_pageconfiguration为一个特定的位置指令

我为我的服务器设置了静态错误页面,但是我想忽略那些以/api/开头的URL,因此那里的处理程序可以用非200代码响应,但不返回静态错误页面。

这里是现有的configuration:

 server { listen 80 default_server; listen [::]:80 default_server; server_name example.com; root /var/www/html/; index index.php; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_intercept_errors on; fastcgi_index app.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 600; } error_page 404 /error/404.html; error_page 500 502 503 504 /error/50x.html; location ^~ /error/ { root /usr/share/nginx/html/; } } 

所以我想我想添加一个新的位置,如:

 location /api/ { } 

但我不知道用什么来告诉它遵循服务器的error_page规则。

文件说

当且仅当在当前级别上没有定义error_page指令时,这些指令才从前一级inheritance。

这表明你只需要为一个你不感兴趣的代码定义一个error_page,其余的就应该重置。 这个论坛post支持。

 location /api { error_page 499 error.html } 

试试看,回报你find的东西。

你可以使用这个:

 location /api { try_files $uri $uri/ /path/to/api/handler; } 

这样nginx将首先检查/api目录下的真实文件,如果找不到匹配,则将处理传递给您要使用的处理程序。