我的nginx conf文件的静态文件位置设置为:
# Settings to by-pass for static files
location ^~ /static/ {
# Example:
# root /full/path/to/application/static/file/dir;
root /opt/flaskapp/static/;
}
我的模板文件包含:
<link href="/static/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="/static/bootstrap-responsive.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="/static/bootstrap.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
但是,当我运行我的烧瓶app时 - bootstrap没有加载任何js :(
我尝试了多种位置组合,甚至尝试在我的nginx con文件中使用它:
location /bootstrap.min.js {
alias /opt/flaskapp/static/bootstrap.min.js;
}
我可以通过127.0.0.1/bootstrap.min.js访问js文件。
我确定我错过了一些愚蠢的东西。
谢谢!
答案 0 :(得分:1)
这是因为您认为nginx在查看/opt/flaskapp/static/<file>
时会在文件系统中查找/opt/flaskapp/static/static/<file>
,因为URI始终附加到本地路径(root
),直到您要么:
rewrite
更改URI。alias
指令将位置前缀或正则表达式映射到物理路径。因此,在您的情况下,您需要后者,正确的配置是:
location ^~ /static/ {
alias /opt/flaskapp/static/;
}
在您的特定情况下,由于URI前缀与目录名称相同,您只需将本地root
更改为父目录(root /opt/flaskapp
)。