settings.py:
DEBUG = False
STATIC_ROOT = '/opt/app/statics/'
# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/statics/'
# Additional locations of static files
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'statics'),)
urls.py
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
import settings
if settings.DEBUG == True:
urlpatterns += staticfiles_urlpatterns()
的/ etc / nginx的/位点可用的/应用
server {
server_name xxx.xxx.xxx.xxx;
access_log on;
location /statics/ {
alias /opt/app/statics/;
}
location / {
proxy_pass http://127.0.0.1:8000;
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"';
}
}
/ etc / nginx / sites-enabled / app与网站中的完全相同 具有静态文件的文件夹已被授予最高权限(chmod 777)。
每当我尝试使用命令运行服务器时:
gunicorn -b 0.0.0.0:8000 example.wsgi:application
它实际上运行服务器,但不能正确地重定向到静态文件
答案 0 :(得分:0)
请使用此:
root /opt/app/statics/;
代替:
alias /opt/app/statics/;
答案 1 :(得分:0)
如果您的root配置是这样的,
location /static/ {
root /opt/app/statics/;
}
在这种情况下,Nginx将派生的最终路径为
/opt/app/statics/statics
这将返回404,因为静态/
中没有静态/这是因为位置部分附加到根目录中指定的路径。因此,使用root,正确的方法是
location /static/ {
root /opt/app/;
}
答案 2 :(得分:0)
我已经明白,每当我使用端口“8000”访问网站时,一切都运行得很好,但是如果我只是想用通常的端口“80”到达那里,静态文件就不会被传送。有人知道发生了什么事吗?