Nginx 总是提供相同的响应

Nginx 总是提供相同的响应

对于即将上线的网站,我们通常会index.html在 Web 根目录中放置一个静态文件。该文件内嵌包含所有样式和图像,因此无需其他请求即可加载该页面。

现在,我使用这个配置:

# Temporary placeholder
server {
        server_name .domain.com;
        root        /var/www/domain/production/public;

        index index.html;
        charset UTF-8;
}

# Production
server {
        server_name test.domain.com;
        root        /var/www/domain/production/public;

        charset UTF-8;
        gzip_types text/plain application/xml text/css text/js image/svg+xml text/xml application/x-javascript text/javascript application/json application/xml+rss;
        location /assets/images {
           default_type image/jpeg;
           expires max;
           add_header Pragma public;
           add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        }
        location /styles/fonts {
           expires max;
           add_header Pragma public;
           add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        }

        include conf.d/common.conf.inc;
}

这“足够”有效,但由于仅设置了“index”指令,人们能够请求不应提供的资源(例如 domain.com/foo/bar/file.ext)。

问题:我如何指向全部请求到index.html第一个服务器块?我尝试使用位置,try_files但 nginx 无法处理该列表中的单个项目:

location / {
    try_files index.html;
}

我怎样才能实现这个目标?(我知道您可以使用重定向,但目前我不喜欢这种解决方案。domain.com/foo/bar/baz 应该只是提供服务index.html)。

答案1

我认为你需要这个:

location = /index.html {
    root /var/www/domain/production/public;     
}
location / {
    rewrite . /index.html last;
}

Nginx 的 location 文档看看这是什么意思。

相关内容