nginx - 为什么要尝试文件?(prerender.io nginx)
问题描述
我无法理解https://prerender.io的官方 nginx conf
为什么要尝试文件?
使用永远不会被解雇try_files
!location @prerender
我正在寻找以下行为:
如果从浏览器访问任何页面,nginx 会静态/本地提供它。如果从某个爬虫访问该页面,则它由代理提供。
官方片段似乎没有这样做,但官方文档说:
您安装在服务器上的 Prerender.io 中间件将检查每个请求以查看它是否是来自爬虫的请求。如果是来自爬虫的请求,中间件将向 Prerender.io 发送请求以获取该页面的静态 HTML。如果没有,请求将继续到您的正常服务器路由。爬虫永远不会知道您正在使用 Prerender.io,因为响应总是通过您的服务器。
有人可以帮我理解吗?
解决方案
来自 Prerender.io 的 Todd 在这里。
我们建议使用 try_files,例如:
try_files $uri @prerender;
这样做是为了让 $uri 可以匹配静态文件(图像等),然后,如果找不到,则运行 @prerender 配置。
有时我们会看到 $uri 与 /index.html 匹配每个请求以返回单页应用程序的 html 文件。如果是这种情况,您可以删除 try_files,而只需将 @prerender 位置的内容复制到您需要的任何位置,以便它在您的 index.html 文件被提供之前运行。
推荐阅读
- objective-c - Xcode 12 不要求本地网络权限
- c# - 如何检测 .cs 文件以包含在新的 .csproj SDK 格式中?
- java - java.lang.ClassCastException:类 java.util.HashMap 无法强制转换:SpringBoot
- logging - 如何登录 OpenEdge Progress?
- laravel - 当逻辑似乎正确时,为什么我的功能不起作用?
- c++ - 由于未初始化的局部变量错误而无法运行
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:org/bouncycastle/cms/CMSException
- c# - ASP.NET 中继器如何并排获得两个部门
- mysql - 指数超出范围。插入数据时必须为非负且小于集合错误的大小
- javascript - 将小时、分钟、秒添加到输入字段并使用 js 显示为 hh:mm:ss am/pm 并在保存到 Blazor 中的 db 之前转换为 Timespan