关闭 django 站点进行维护?

Posted

技术标签:

【中文标题】关闭 django 站点进行维护?【英文标题】:taking a django site down for maintenance? 【发布时间】:2016-03-12 23:03:33 【问题描述】:

我正在使用 nginx/gunicorn 运行 django。我对 nginx 和 gunicorn 的工作方式并不十分熟悉,但假设我想关闭我的 django 站点进行维护。

我假设我想通过进入 nginx/gunicorn 设置并重定向一些东西来重定向到一些简单的维护页面,但我可能是错的。

正确(最简单)的方法是什么?

编辑添加 nginx 配置代理语句:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;

编辑 2:添加支持 nginx 站点的文件

upstream app_server 
    server 127.0.0.1:9000 fail_timeout=0;


server 
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name _;

    keepalive_timeout 5;

    # Your Django project's media files - amend as required
    location /media  
        alias /home/django/mysite/media;
    

    # your Django project's static files - amend as required
    location /static 
        alias /home/django/mysite/static_dump;
    

    location / 
        #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_set_header Host $http_host;
        #proxy_redirect off;
        #proxy_pass http://app_server;

        if (-f /usr/share/nginx/html/index.html) 
                return 503;
        
    
   error_page 503 @maintenance;
   location @maintenance 
        rewrite ^(.*)$ /503.html break;
   

【问题讨论】:

【参考方案1】:

其中一种方法是在服务器的某处添加维护页面,然后在您的 nginx 文件中(在启用站点的文件夹中)将请求重定向到该维护页面的站点。 您的 nginx 页面应包含:

server_name myhost.example.com;

root /path/to/html/file/directory;
index index.html;

只有上面3行就够了

【讨论】:

我试过了,但奇怪的是,即使在我重新启动服务器后它似乎也没有效果。我不知道为什么它不起作用 @deltaskelta 您是否删除了代理转发到 gunicorn 服务器? 不,里面有四行我没碰过...将它们添加到主帖 我当然在 nginx 配置文件中有这些行。我应该删除它们吗?好像不是这样的 @deltaskelta 您在问题中显示的行仅在您要重定向请求时才需要。因此您可以在维护期间将它们注释掉

以上是关于关闭 django 站点进行维护?的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭 .NET 站点进行维护?

重写“站点关闭”页面的规则

维护用户会话而无需将用户保存在 django 身份验证系统中

Wordpress:网站一部分的维护模式

网站维护模式[关闭]

如何从wordpress站点停用维护模式