【问题标题】:Why try_files? (prerender.io nginx )为什么要尝试文件? (prerender.io nginx)
【发布时间】:2018-05-13 20:53:29
【问题描述】:

看不懂https://prerender.ioofficial nginx conf

为什么是 try_files?

使用try_files location @prerender 永远不会被解雇!

我正在寻找以下行为:

如果从浏览器访问任何页面,nginx 会静态/本地提供它。如果该页面是从某个爬虫访问的,则它由代理提供。

官方的sn-p好像没有那样做,但是官方文档是这么说的:

您在服务器上安装的 Prerender.io 中间件将检查每个请求,以查看它是否是来自爬虫的请求。如果是来自爬虫的请求,中间件将向 Prerender.io 发送请求以获取该页面的静态 HTML。如果没有,请求将继续到您的正常服务器路由。爬虫永远不会知道您正在使用 Prerender.io,因为响应总是通过您的服务器。

有人可以帮我理解吗?

【问题讨论】:

    标签: nginx prerender


    【解决方案1】:

    来自 Prerender.io 的 Todd。

    我们建议使用 try_files,例如:

    try_files $uri @prerender;
    

    这样做是为了让 $uri 可以匹配静态文件(图像等),然后,如果找不到,则运行 @prerender 配置。

    有时我们会看到 $uri 与 /index.html 匹配每个请求以返回单页应用程序的 html 文件。如果是这种情况,您可以删除 try_files,而只需将 @prerender 位置的内容复制到您需要的任何位置,以便它在您的 index.html 文件被提供之前运行。

    【讨论】:

    • 感谢您的回答。为什么“如果没有找到”?人们用来共享有效链接(打开图元标记案例)。如果爬虫扫描无效页面,它应该收到 404。为什么只代理无效请求?我没明白重点。
    • 大多数单页应用程序都有一个“catch-all”,它只返回一个状态码为 200 的 index html 页面。通常检查页面是否有效是由带有 SPA 的 javascript 完成的.因此“@prerender”配置运行并尝试检查请求是否来自爬虫。如果是这样,它将请求代理到 Prerender.io。如果没有,它会使用“@prerender”配置中的重写来提供 /index.html 文件。
    猜你喜欢
    • 1970-01-01
    • 2019-03-23
    • 2021-12-04
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    相关资源
    最近更新 更多