Nginx try_files 通配符

Nginx try_files 通配符

因此,我尝试设置一个默认的 nginx 配置文件,该文件可以部署到多个 docker 镜像中,每个容器中的网站配置都不同。当前设置如下:

server {
   listen 80 default_server;

   root /var/www/;
   index index.php index.html;

   server_name localhost;
   include php5-fpm.conf;


   location / {
           try_files $uri $uri/ /index.php?q=$request_uri;
   }

   location /status {
           stub_status on;
           access_log   off;
           allow 127.0.0.1;
           deny all;
   }

}

问题是它不适用于使用 index.htm 或 index.html 的静态网站

我可以像下面这样编辑位置部分,然后网站就可以正常工作了。有没有办法让 nginx 使用通配符,所以 index.* 它会使用它找到的任何索引文件?index.* 本身不起作用,所以不确定需要添加/删除什么...

       location / {
           try_files $uri /index.htm?q=$request_uri;
   }

答案1

您的注意力集中到了错误的部分try_files

与您想要的内容相关的部分是$uri/,带有尾部斜杠,您似乎已将其删除。此位导致 nginx 尝试index指令中列出的所有文件。

您应该将这部分放回去try_files,然后编辑index指令以包含您想要的文件名。

相关内容