如何使用nginx和gunicorn为Django应用程序提供静态文件?

现在,我试图按照这个教程:

http://honza.ca/2011/05/deploying-django-with-nginx-and-gunicorn

模板网站正确加载,但图像不加载。 这里是我的应用程序的config.py文件的一部分:

# Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/home/media/media.lawrence.com/media/" MEDIA_ROOT = '' # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. # Examples: "http://media.lawrence.com/media/", "http://example.com/media/" MEDIA_URL = '' # Absolute path to the directory static files should be collected to. # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/home/media/media.lawrence.com/static/" STATIC_ROOT = '/home/lilo/textImageSite/imageSite/static/' # URL prefix for static files. # Example: "http://media.lawrence.com/static/" STATIC_URL = '/static/' # Additional locations of static files STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. ) 

我的nginxconfiguration文件(位于/ etc / nginx / sites-enabled):

 server { listen 80; server_name xxx.xx.xx.xx; #the actual IP of the server; it has a public IP address access_log /home/lilo/textImageSite/access.log; error_log /home/lilo/textImageSite/error.log; location /static { root /home/lilo/textImageSite/imageSite; } location / { proxy_pass http://127.0.0.1:8888; } } 

我的gunicorn_conf文件:

 bind = "0.0.0.0:8888" logfile = "/home/lilo/textImageSite/gunicorn.log" workers = 3 

现在在我的模板中,这就是我如何访问图像:

 <img src="{{STATIC_URL}}{{ choice.image_location}}" /> <br /> 

这是生成的HTML的样子:

 <img src="/static/street_sign2.jpg" /> <br /> 

对不起,文本墙,但我不明白我的设置有什么问题…

原来我解决了我自己的问题…误解了Nginx的工作方式。 :d

 server { listen 1234; //port that Nginx listens on server_name xxx.xx.xx.xx; #the actual IP of the server; it has a public IP address access_log /home/lilo/textImageSite/access.log; error_log /home/lilo/textImageSite/error.log; location /static { root /home/lilo/textImageSite/imageSite; } location / { proxy_pass http://127.0.0.1:8888; //the port that Gunicorn uses } } 

所以在我的情况下,如果我有我的Gunicorn实例运行在端口8888,然后去xxx.xxx.xx.x:8888 / textImageSite将加载页面,但没有任何静态内容。 如果我使用xxx.xxx.xx.x:1234访问它,那么页面将加载静态内容(图像,CSS样式表等)。 这是我第一次使用Gunicorn和Nginx(也是第一次编写一个Django应用程序),所以希望这会帮助那些困惑的人:)