nginx 将站点置于维护状态,要么阻止维护文件,要么仍然允许所有文件

nginx 将站点置于维护状态,要么阻止维护文件,要么仍然允许所有文件

我正在运行一个带有 php-fpm 的简单 nginx 服务器来为我提供页面服务。

我一直尝试通过将所有请求重定向到 503 然后使用自定义错误页面显示 503 将其置于维护模式。

我的问题是,我的配置出了问题,导致 nginx 重定向每个页面包括将自定义 503 改为不带任何信息的内置默认值,或者稍微更改配置(见下文),我的所有 php 页面都会继续提供服务。我正在尝试找到一种方法来将每个请求重定向到维护页面,而不是使用 nginx 的默认值。

server {
    listen 80 default_server;

    # configuration for SSL and other things not pertaining to the question
    # ...

    root /srv/http;

    index index.php index.html index.htm index.nginx-debian.html;

    error_page 400 /400.php;
    error_page 401 /401.php;
    error_page 403 /403.php;
    error_page 404 /404.php;
    error_page 410 /410.php;
    error_page 500 /500.php;
    error_page 503 /503.php;

    # the method I'm using to enable maintenance involves looking for a file
    # putting this right here causes the entire site to be blocked
    if (-f $document_root/maintenance.on) {
        return 503;
    }

    location / {
        # putting the 503 checker here instead does not stop requests to index.php
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }
}

我尝试了多种组合,但确实让我很困惑。我做错了什么?

相关内容