【发布时间】:2025-12-27 05:35:12
【问题描述】:
下面是我的 nginx 配置。
server_name myserver.com;
location ~ /(in|sr)/(en|tm)/(.+\.(css|js)) {
proxy_set_header Host http://mybucketabc.s3.amazonaws.com;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Authorization '';
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
proxy_hide_header x-amz-meta-server-side-encryption;
proxy_hide_header x-amz-server-side-encryption;
proxy_hide_header Set-Cookie;
proxy_ignore_headers Set-Cookie;
proxy_intercept_errors on;
add_header Cache-Control max-age=31536000;
rewrite ^/(in|sr)/(en|tm)/(.*) /$1/$2/$3 break;
proxy_pass http://mybucketabc.s3.amazonaws.com;
}
当我尝试访问 http://myserver.com/in/en/main.9bd9926d.js 时,我收到“400 Bad Request”
但直接访问http://mybucketabc.s3.amazonaws.com/in/en/main.9bd9926d.js 工作正常。
我对 html 和 svg 文件有类似的代理传递规则,两者都可以正常工作,但对 .js 文件的请求总是抛出“400 Bad Request”。
非常感谢任何帮助。
【问题讨论】:
-
您是否尝试过使用最少的指令创建一个更简单的位置并慢慢添加指令?我只对 proxy_pass、proxy_intercept_errors 和 recursive_error_pages 做了类似的事情
-
这种尝试帮助我解决了这个问题。这是由于错误的主机而发生的。 proxy_set_header 主机mybucketabc.s3.amazonaws.com; “http://”被错误地添加到主机中。非常感谢。