我有一个关于设置 nginx 的问题。我的 nginx.conf 配置工作正常。我放弃了网站上的所有图片和文件。
server {
listen 443 ssl
...
servername my-site.ru
location / {
proxy_pass https://storage.yandexcloud.net;
}
location ~ ^(.+)\.(png|jpe?g|JPE?G|PNG)${
if ($http_accept ~* "webp") {
add_header Content-Type image/webp;
add header Timing-Allow-Origin *;
rewrite (.*) $1.webp break;
}
proxy_pass https://storage.yandexcloud.net;
proxy hide header Content-Type;
}
现在需要更改 proxy_pass,现在我的配置如下所示:
server {
listen 443 ssl
...
servername my-site.ru
location / {
proxy_pass https://storage.yandexcloud.net/<my-bucket>;
}
location ~ ^(.+)\.(png|jpe?g|JPE?G|PNG)${
if ($http_accept ~* "webp") {
add_header Content-Type image/webp;
add header Timing-Allow-Origin *;
rewrite (.*) $1.webp break;
}
proxy_pass https://storage.yandexcloud.net/<my-bucket>;
proxy hide header Content-Type;
}
...
}
如果第一个“location /”工作没有问题(所有文档和文件都根据请求显示),那么处理 WEBP 的第二个“location /”会产生错误: 1#1:“proxy_pass”在位置中不能有 URI 部分由正则表达式给出,或在指定位置、ar inzide“if”语句中给出,或在 /etc/nginx/conf.d/nginx.conf 中的“limit_ except”块内给出
它说你不能在命名位置使用 URI,但我似乎无法解决这个问题。如果存储桶中有这样的图片,请告诉我如何提供 WEBP,如果没有,但同时提供 JPG 或 PNG,以便 proxy_pass 是一个 URI ( https://storage.yandexcloud.net/my-bucket /),而不是URL ( https://storage.yandexcloud.net )