Nginx位置:从维护模式中豁免某些位置

时间:2018-01-23 17:47:03

标签: symfony nginx

我在nginx上运行了一个Symfony 3.4应用程序,并且在nginx中以下列方式实现了维护模式:

 location / {
            # try to serve file directly, fallback to app.php
            try_files $uri /app.php$is_args$args;

 }

 location ~ ^/(app)\.php(/|$) {

            if (-f "/var/www/mysite.com/web/maintenance.html") {
                   return 503;
            }
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
 }

error_page 503 @maintenance;

location @maintenance {
           rewrite ^(.*)$ /maintenance.html break;
}

我想从维护模式中豁免某个位置,以便Symfony应用程序继续提供此位置。因此,mysite.com/still/available/route的请求不会重定向到维护页面。

怎么办?

1 个答案:

答案 0 :(得分:0)

我找到了答案,实际上,这很明显。只需要把#34;如果"进入根位置块(/)并添加另一个位置块,其中包含在维护模式期间应保持可访问的路径。当然,那里肯定不会出现if-clause:

location / {
            # try to serve file directly, fallback to app.php
            if (-f "/var/www/mysite.com/web/maintenance.html") {
                   return 503;
            }
            try_files $uri /app.php$is_args$args;

 }

location /still/available/route {

            try_files $uri /app.php$is_args$args;

 }

location ~ ^/(app)\.php(/|$) {


            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
 }

error_page 503 @maintenance;

location @maintenance {
           rewrite ^(.*)$ /maintenance.html break;
}