使用Django和Nginx在远程服务器上提供静态和媒体文件

时间:2017-04-20 15:01:59

标签: django nginx webserver

我正在使用Nginx配置服务器,该服务器将子域重定向到远程服务器(在同一本地网络上)的网站(使用Django制作)。它可以很好地为每个站点的内容提供服务,但是我无法提供静态和媒体文件(例如css)。以下是配置文件的内容:

server {
            listen 80;
            server_name myaddress.fr

            location / {
                    proxy_pass              http://192.168.0.85:8000;
            }
}

这是Django网站(收听192.168.0.85:8000)中settings.py的结尾:

STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = '/static/'


MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

通常,当我的网站与nginx位于同一台服务器上时,我只需要将这些行添加到nginx conf文件中:

location /media/  {
    alias /local/path/to/media/;
}

location /static/ {
    alias /local/path/to/static/;
}

如何推广此配置以在远程服务器(此处为192.168.0.85)上提供媒体和静态文件?我应该在远程机器上安装另一个网络服务器吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您需要某种方式来提供显示这些文件的路线。

这样做的一种方法是在远程服务器上安装nginx并代理它,就像使用应用程序本身一样。

另一种选择,因为你说这都在同一个本地网络中。将使用类似NFS的东西将静态目录挂载到代理服务器上,以便现有的nginx可以直接为它们提供服务。

类似的选项是配置staticfiles应用程序以及用户上传文件的存储,以将其文件直接保存在代理上。