Twitter bootstrap 无法引用nginx+;上的静态文件;独自创立

Twitter bootstrap 无法引用nginx+;上的静态文件;独自创立,twitter-bootstrap,nginx,flask,Twitter Bootstrap,Nginx,Flask,我的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" r

我的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">
我可以通过127.0.0.1/bootstrap.min.js访问js文件

我肯定我错过了一些愚蠢的事情


谢谢

这是因为您认为nginx将在文件系统中查找
/opt/flaskapp/static/
,同时查找
/opt/flaskapp/static/static/
,因为URI总是附加到本地路径(
根目录
),直到您:

  • 使用
    rewrite
    更改URI
  • 使用
    alias
    指令将位置前缀或正则表达式映射到物理路径
因此,在您的情况下,您需要后者,正确的配置是:

location ^~ /static/ {
    alias /opt/flaskapp/static/;
}

在您的特定情况下,由于URI前缀与目录名相同,您也可以简单地将本地
根目录更改为父目录(
根目录/opt/flaskapp
)。

nginx服务在我这样更改时不会重新启动,我的错误,您的配置实际上是允许的,如下所述:当其配置正确时,我可以通过:127.0.0.1/static/file_name.js检索静态文件吗?我认为您应该从
根目录中删除“static/”,directiveVinicius是正确的。Nginx正在寻找/opt/flaskapp/static/static/您应该能够在访问日志中确认这一点。
location ^~ /static/ {
    alias /opt/flaskapp/static/;
}