在 Nginx 中,如何在不向应用服务器发送请求的情况下针对特定的 URL pattern/regex return 404?
In Nginx, how can I return 404s for specific URL pattern/regex without sending request to the app server?
我在 rails 应用程序 (puma/nginx) 上有一个 ruby,我遇到了一些问题,一些请求正在访问应用程序服务器并在我的应用程序上出错。
例如,这是新闻文章 123456 的有效路由:
/api/v1/news/123456
但是我收到了很多这样的 API 请求:
/api/v1/news/apple-touch-icon.png
(和其他静态资产)
这当然是无效的,应用程序给我错误。我可以在代码中验证只接受有效值,但是应用程序仍然需要处理这些请求。
我在想是否有一种方法可以在 nginx 中配置一个正则表达式,其中所有以 /api/ 开头并具有 png、jpg、ico、xml 等内容的正则表达式在 URL 中给出 404 错误而不向应用程序服务器发送请求,并且如果可能的话将响应缓存几分钟以简化加载。
我怎样才能做到这一点?
谢谢!
location ~ ^/api/.*\.(png|jpg|ico|xml)$ {
return 404;
}
你不能通过缓存来加速它,它非常快。
我在 rails 应用程序 (puma/nginx) 上有一个 ruby,我遇到了一些问题,一些请求正在访问应用程序服务器并在我的应用程序上出错。
例如,这是新闻文章 123456 的有效路由:
/api/v1/news/123456
但是我收到了很多这样的 API 请求:
/api/v1/news/apple-touch-icon.png
(和其他静态资产)
这当然是无效的,应用程序给我错误。我可以在代码中验证只接受有效值,但是应用程序仍然需要处理这些请求。
我在想是否有一种方法可以在 nginx 中配置一个正则表达式,其中所有以 /api/ 开头并具有 png、jpg、ico、xml 等内容的正则表达式在 URL 中给出 404 错误而不向应用程序服务器发送请求,并且如果可能的话将响应缓存几分钟以简化加载。
我怎样才能做到这一点?
谢谢!
location ~ ^/api/.*\.(png|jpg|ico|xml)$ {
return 404;
}
你不能通过缓存来加速它,它非常快。