1

我有一个设置,我的 nginx 在前面,apache+PHP 在后面。

我的 PHP 应用程序在 memcache 中缓存了一些页面,这些页面由 nginx 直接访问,除了一些在 Nginx 中使用 SSI 构建的动态部分。

我遇到的第一个问题是 nginx 没有尝试将 memcache 用于 ssi URI。

<!--# include virtual="/myuser" -->

所以我想如果我强制它使用完整的 URL,它会这样做。

<!--# include virtual="http://www.example.com/myuser" -->

但是在日志文件(nginx和apache)中,我可以看到在url的开头添加了一个斜杠

http ssi filter "/http://www.example.com/myuser"

在 SSI 模块的源代码中,我看到似乎添加了一个 PREFIX,但我真的可以判断我是否可以禁用它。

有人有这个问题吗?Nginx 版本:Ubuntu Karmic 64 位上的 0.7.62

非常感谢

4

2 回答 2

18

尽管您无法在 SSI 说明中直接引用它们,但您可以将 nginx 配置为包含远程URL 在站点配置中,使用本地路径和命名的远程位置创建位置,该位置指向您想要的位置。例如:

服务器 {
……
  位置/远程{
    proxy_pass @long_haul; # 或使用 "try_files" 提供回退
  }

  位置@long_haul {
    proxy_pass http://porno.com;
  }
……
}

并在提供的 html 中使用包含 /remote 路径的指令:

  <!--# include virtual="/remote/rest-of-url&and=parameters" -->

请注意,您可以自定义使用变量和正则表达式进一步传递的 URL。例如:

  位置 ~/remote(.+) {
    proxy_pass @long_haul$1?$args;
  }
于 2011-04-08T10:37:16.253 回答
2

它与 nginx 无关,你不能那样做。SSI 不接受远程 uri。您只能指定本地文件路径。

请参阅 http://en.wikipedia.org/wiki/Server_Side_Includes

于 2010-07-26T12:07:15.633 回答