我已将 Nginx 设置为反向代理,但似乎无法在上游服务器之一上提供静态文件。以下是我的 nginx conf 文件的重要部分:
http {
include mime.types;
upstream dashboard {
server dashboard:80;
}
upstream editor {
server editor:80;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://dashboard;
}
location /editor/ {
rewrite ^/editor(.*)$ $1 break;
proxy_pass http://editor;
}
}
和dashboard
都是包含由其自己的 nginx 服务器提供服务的应用程序editor
的 docker 容器。应用程序可以运行,但是当应用程序尝试加载其静态资产(.css、.js 等)时,我收到 404 错误:create-react-app
dashboard
editor
我尝试在我的 nginx conf 中添加一个额外的位置块来捕获对静态资产的请求并尝试每个上游:
location ~* .(ico|jpg|png|gif|jpeg|css|swf|js|woff)$ {
try_files $uri $uri/ /editor/;
}
说实话我不确定这会产生什么影响,但其效果是,现在已成功为dashboard
和editor
服务器找到了静态资产,但却被错误地解释为文本文件:
Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://example.com/static/css/2.8271af8e.chunk.css"
我不知道为什么添加这个额外的位置块会导致这种情况,但是,因为我已经包含了必要的mime.types
文件。此时,我完全搞不懂 Nginx 如何处理我的静态文件请求。
有人可以建议修复方法或解释为什么额外的位置块导致找到资产但被错误地解释为文本文件吗?