我在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
的请求不会重定向到维护页面。
怎么办?
答案 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;
}