从nginx的$ uri中删除尾部斜杠?
问题描述:
我正在将我的网站页面缓存到静态平面文件缓存中,并试图使用try_files指令从缓存中首先加载文件(如果存在),然后转到Web应用程序。
基本上,我试图做这样的事情:
try_files $uri $uri/ /var/www/vhosts/example.com/httpdocs/staticfilecache/$uri/index.html
在这个例子中,如果用户请求example.com/products/它会尝试staticfilecache /产品/ index.html的我的问题是, $ uri已经包含一个尾部斜线。试图在$ uriindex.html中使用它会产生一个错误。
是否有任何高性能/简单的方法总是剥离/但不重写浏览器中的地址?
答
你试图做的事情在许多层面上都有许多问题。
- “/ var/www/vhosts/$ uri”无效。除非您在“staticfilecache”文件夹下复制了 您的整个文档根目录。
- Nginx拥有自己的缓存系统,只要安装完成,它将首先自行检查它,而不需要任何干预。
- 只要索引指令已设置,Nginx就会自行检查索引文件。
- 您的代码实际上是试图检查最后一个staticcache,并且不是像您所说的那样首先检查。
- 在磁盘上创建静态文件缓存毫无意义。 Nginx可以从 以及它们的原始位置读取静态文件。
- 无论如何,Nginx会自行为需要缓存的项目创建缓存,通常为动态文件。这不是手动工作。
基本上,它看起来像你有点在一些网络服务器基本面的错误轨道上。