Nginx try_文件不适用于default index.html

Nginx try_文件不适用于default index.html,nginx,devops,nginx-location,nginx-reverse-proxy,Nginx,Devops,Nginx Location,Nginx Reverse Proxy,我正在使用nginx的$geoip\u country\u代码模块基于IP重定向用户。我的配置代码如下所示- server { listen 80; gzip on; server_name example.com; root html/example; location / { index index.html; try_files /$geoip_country_code/index.html /in

我正在使用nginx的$geoip\u country\u代码模块基于IP重定向用户。我的配置代码如下所示-

server {
      listen 80;
      gzip on;
      server_name example.com;
      root html/example;
      location / {
        index index.html;
        try_files /$geoip_country_code/index.html /index.html;
      }
      location ~* \.(gif|jpg|jpeg|png|js|css)$ { }
  }
想法是根据我本地化的国家重定向用户,否则用户将转到默认索引,即其他所有人的通用索引。当我在本国的浏览器中打开它时,它可以完美地工作,因为我已经为它进行了本地化。但从其他国家/地区打开时,会显示内部服务器错误。它不会成为默认的索引页


有人能告诉我我做错了什么吗

try_files语句的最后一个元素是默认操作,即URI或响应代码。
/index.html
开始搜索新的
位置
,以处理请求,并在开始处返回,因此有一个重定向循环

您可以通过将
/index.html
改为文件术语来解决此问题。例如:

try_files /$geoip_country_code/index.html /index.html =404;
由于
/index.html
始终存在,因此永远不会执行
=404
操作

就我个人而言,我会使用一种通用的解决方案:

try_files /$geoip_country_code$uri $uri /index.html;

有关更多信息,请参阅。

发布您在nginx访问/错误日志中看到的日志nginx快把我逼疯了。当
/index.html
明显存在时,它返回404,并且在错误日志中不输出任何内容。您如何“将
/index.html
改为文件术语”?OP已经有
try_文件/$geoip_country_代码/index.html/index.html
@DanDascalescu读取链接的文档。您将看到
try\u files
接受一个或多个在同一
location
块中处理的文件参数,但最后一个参数是响应代码、命名位置或内部URI。对于URI,它看起来与文件术语相同,但会导致Nginx重新启动对匹配的
位置的搜索。OP的问题是
try\u files
语句导致了重定向循环。