我有一个包含目录和html文件的s3存储桶。我在存储桶前面使用了nginx,并为存储桶配置了一个proxy_pass,工作正常。我想要没有html扩展名的干净URL,并且这些URL可以正确解析。例如,代替foo.com/bar/my-file-name.html
,必须可以在foo.com/bar/my-file-name
这里的主要问题是如何防止在每个URL的末尾都要求.html。在中,我希望nginx处理每个请求的路由并尝试查找扩展名为.html的文件,然后返回它。
我的问题是,我无法弄清楚如何在非S3网站上强制nginx try_files
。当我尝试添加try_files
的任何配置时,它会通过在所有路径上返回HTTP 500错误来中断站点。
为了进行比较,这里的配置在非S3支持的站点上很好用(服务器本身的文件):
location / {
try_files $uri $uri/ @htmlext;
}
location @htmlext {
rewrite ^(.*)$ $1.html last;
}
我的目标是使用proxy_pass
将此行为复制到S3存储桶并强制它尝试使用除index.html
以外的.html扩展名的文件名,该文件名开箱即用。
这是我目前的配置很好,除了index.html
以外的任何html文件:
location / {
proxy_pass my-bucket.s3.blahblah/;
}