nginx - 删除 nginx 中 $uri 的尾部斜杠?

标签 nginx

我将我的网站页面缓存到静态平面文件缓存中,并尝试使用 try_files 指令首先从缓存加载文件(如果存在),然后转到 Web 应用程序。

我基本上想做这样的事情:

 try_files $uri $uri/ /var/www/vhosts/example.com/httpdocs/staticfilecache/$uri/index.html

在此示例中,如果用户请求 example.com/products/,它将尝试 staticfilecache/products/index.html 我遇到的问题是 $uri 已经包含尾部斜杠。尝试将其与 $uriindex.html 一起使用会产生错误。

是否有任何高性能/简单的方法来始终删除/但不重写浏览器中的地址?

最佳答案

您正在尝试做的事情在很多层面上都有很多问题。

  1. “/var/www/vhosts/$uri”无效。除非你有重复的 staticfilecache 文件夹下的整个文档根目录。
  2. Nginx 有自己的缓存系统,会先自行检查 只要设置完毕,就不需要您的任何干预。
  3. 只要设置了索引指令,Nginx 就会自行检查索引文件。
  4. 您的代码实际上是在尝试检查静态缓存的最后一个和 不是像你说的那样首先。
  5. 在磁盘上创建静态文件缓存是没有意义的。 Nginx 可以 也可以从原始位置读取静态文件。
  6. 无论如何,Nginx 都会为需要缓存的项目创建缓存, 通常是动态文件本身。这不是一项体力工作。

基本上,看起来您在某些网络服务器基础知识上有点走错了路。

关于nginx - 删除 nginx 中 $uri 的尾部斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480257/

相关文章:

nginx - php5-fpm + nginx + Google bot = 由对等方重置连接

Nginx:根据引用主机名有选择地启用压缩

.htaccess - Nginx url重写在两个文件夹中

file-upload - 在nginx中禁用请求缓冲

nginx - 使用 Nginx 加载 CSS 和 Js 文件

ruby-on-rails - 如何使用 rails、nginx 和乘客配置 `Access-Control-Allow-Origin`?

用于本地 HTTPS 的 Docker WSL2 SSL 证书

python - 如何检查 Nginx 是否工作? (Python : Flask+Gunicorn+Nginx)

nginx - 使用 Clojure 和 Ring 的 HTTPS 请求

nginx - 错误 : getaddrinfo ENOTFOUND ingress-nginx. ingress-nginx-controller.svc.cluster.local