【问题标题】:Serving static and media files on a distant server with Django and Nginx使用 Django 和 Nginx 在远程服务器上提供静态和媒体文件
【发布时间】:2017-09-17 07:19:29
【问题描述】:

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

server {
            listen 80;
            server_name myaddress.fr

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

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

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)上提供媒体和静态文件?我应该在远程机器上安装另一个网络服务器吗?

提前感谢您的帮助!

【问题讨论】:

    标签: django nginx webserver


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢,它适用于第一个解决方案(在远程服务器上安装 nginx),但其他解决方案似乎也很有趣,我可能有一天会需要它们 :)
    猜你喜欢
    • 2018-02-20
    • 2011-06-16
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2012-10-29
    • 2019-02-13
    相关资源
    最近更新 更多