【问题标题】:How to fix 404 errors when serving static files through nginx通过 nginx 提供静态文件时如何修复 404 错误
【发布时间】:2019-11-02 17:39:29
【问题描述】:

我必须使用烧瓶和 nginx 作为反向代理运行的应用程序。我在从我的 /birthday/ 位置提供静态文件时遇到问题。

location /{
    proxy_pass http:127.0.0.1:6060;
}

有问题的应用是。

 location /birthday/
 {
     proxy_pass http:127.0.0.1:6061;
 }

我已经厌倦了以下内容。

 location /birthday/{
   root /var/www/birthday_app/static;
   try_files $uri @bday
 }
 location @bday{
    proxy_pass http:127.0.0.1:6061;
  }

当我提供http://127.0.0.1/birthday/static/image.png 时,我的状态是找不到。如何修复生日应用以提供静态文件。

【问题讨论】:

  • 谢谢我添加了location ~* /birthday/ {}。但是如何提供静态文件呢?

标签: nginx


【解决方案1】:

所以 URI /birthday/static/image.png 指向 /var/www/birthday_app/static/image.png 的文件?在这种情况下,您不能单独使用root。您需要使用rewrite...breakalias

此外,如果以 /birthday/static/ 开头的 URI 提供静态文件,而所有其他以 /birthday/ 开头的 URI 反向代理上游,您可以将您的配置分成两个 location 块。

例如:

location /birthday/static/ {
    alias /var/www/birthday_app/static/;
}
location /birthday/ {
    proxy_pass http://127.0.0.1:6061;
}

locationalias 的值都应该以/ 结尾,或者都不以/ 结尾。详情请见this document

URI /birthday/foo 将不加修改地向上传递到http://127.0.0.1:6061/birthday/foo。如果您需要映射到 http://127.0.0.1:6061/foo 的 URI,请将尾部 / 添加到 proxy_pass 语句。详情请见this document

【讨论】:

  • 我现在真的很困惑。我可以访问http://127.0.0.1/birthday/static/balloon.jpg,可以从静态中的任何子文件夹访问。 http://127.0.0.1/birthday/static/image/balloon.jpg 有效,但 '127.0.0.1/birthday/static/image/balloon.css' 无效。
  • 您在/var/www/birthday_app/static/image/ 的目录中有一个名为balloon.css 的文件?
  • 好的,我认为它正在工作。我相信这是一个缓存的响应。重新启动浏览器后,它开始工作。感谢所有的帮助。
猜你喜欢
  • 2015-03-18
  • 2011-01-27
  • 2015-11-30
  • 1970-01-01
  • 2017-09-04
  • 2018-10-12
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
相关资源
最近更新 更多