我正在使用PHP-FPM和Nginx托管Wordpress博客。一个月前,如果$ document_root中存在一个名为maintenance.html的文件(并显示它),我修改了网页的Nginx配置文件以返回代码503。
以下是我目前编写的相关部分:
location / {
# if you're just using wordpress and don't want extra rewrites
# then replace the word @rewrites with /index.php
# try_files $uri $uri/ @rewrites;
try_files $uri $uri/ /index.php;
index index.php;
# site goes down for maintenance if maintenance.html exists in document_root
if (-f $document_root/maintenance.html) {
set $maint on;
}
# skip specific IP's (this is causing index.php to not rewrite for these IPs)
if ($remote_addr ~ (1.2.3.4|ano.ther.ip.address)) {
set $maint off;
}
if ($maint = on) {
return 503;
}
location /maintenance {
}
}
昨天,我注意到博客存在问题。经过一番调查,我发现index.php没有被重写。当时,我上面的部分写的有点不同。具体来说,如果$ document_root / maintenance.html存在且$ remote_addr =! 1.2.3.4(其中1.2.3.4是我的家庭IP),该站点实际上处于维护模式。但是,事实证明,对于来自不是1.2.3.4的IP的任何请求,index.php并没有被重写。通过将if语句修改为上面的描述,index.php被正确地重写为来自不是 1.2.3.4的任何IP的任何请求。
由于这些与PHP重写没有任何关系,我不知道为什么会这样,我希望别人可能知道原因。