0

我正在尝试使用 nginx 为我的 Django 应用程序提供静态文件。

我正在关注本指南,他们在其中提出了以下 nginx 配置文件:

server {
    server_name yourdomainorip.com;

    access_log off;

    location /static/ {
        alias /opt/myenv/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

在我的 settings.py 中,我有以下声明:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static/')
STATIC_URL = '/static/'
STATIC_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

我可以在表单的 url 中看到静态文件:

http://x.x.x.x/static/admin/img/icon_searchbox.png

但是,当尝试使用 {% static %} 标记在我的模板中引用静态文件时,我得到以下形式的 url:

http://x.x.x.x:8001/static/admin/img/icon_searchbox.png

它不指向文件,而是由 Django 处理。

关于如何解决这个问题的任何想法?

4

2 回答 2

1

尝试这个:

STATIC_URL = '/static/'

它错过了第一个"/"

于 2013-10-21T08:31:13.110 回答
0

试试这个 nginx 的配置:

location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
于 2013-10-23T04:56:40.523 回答