Nginx 保持页面不重写图像
Nginx holding page without rewriting images
我正在尝试在 Nginx 上为 WordPress 网站设置一个保留页面。保留页面已经存在,但在我们将其移至之前该站点曾经位于 Apache 服务器上。
如果启用维护模式,我可以让它重定向到保留页面,但 holding.png
图像不显示。这是我的 Nginx 代码:
server {
# Set to on to enable holding page
set $maintenance off;
if ($maintenance = on) {
rewrite ^(.*)$ /holding.html break;
}
}
保存图像位于项目的根目录中,就像保存页面 HTML 文件一样。
首先,我会让 Nginx 在维护模式下发送 503(服务不可用)HTTP 响应代码。这可以防止搜索引擎在离线时索引您的维护页面。
其次,我会将维护页面的所有静态资产放在一个单独的目录中(例如 maintenance_files),以便它们很好地耦合在一起,并且可以很容易地从重写中排除。
此外,我希望有一种方法可以排除某些人,以便他们能够执行维护任务。这可以通过 IP 或检查 cookie 来完成。然后,您可以 set/unset 使用一段 javascript 粘贴到浏览器检查器中的 cookie。
server {
error_page 503 @maintenance;
# Set to 1 to enable holding page
set $maintenance 0;
# Always allow access for clients that have the 'maintainer' cookie set
if ($http_cookie ~* "maintainer") {
set $maintenance 0;
}
location / {
if ($maintenance) {
return 503;
}
}
location @maintenance {
# You might want to use a different document root for the maintenance
# files so you can freely move and shuffle in the default document root
# during maintenance.
#root /var/www/maintenance/;
if ($uri !~ ^/maintenance_files/) {
rewrite ^(.*)$ /holding.html break;
}
}
}
为了获得维护权限,请将其粘贴到您的浏览器检查器中:
document.cookie="maintainer=1";
要删除该 cookie:
document.cookie = "maintainer=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
或者,您可以检查磁盘上是否存在文件,而不是将变量 $maintenance
设置为 1。这样你就不必重新加载你的 Nginx 配置来将你的站点置于维护模式。但是,您会在每个请求上添加额外的磁盘查找,这可能是您选择该选项的原因。在这种情况下,运行 在更改 $maintenance 值后执行以下命令:
sudo service nginx force-reload
我正在尝试在 Nginx 上为 WordPress 网站设置一个保留页面。保留页面已经存在,但在我们将其移至之前该站点曾经位于 Apache 服务器上。
如果启用维护模式,我可以让它重定向到保留页面,但 holding.png
图像不显示。这是我的 Nginx 代码:
server {
# Set to on to enable holding page
set $maintenance off;
if ($maintenance = on) {
rewrite ^(.*)$ /holding.html break;
}
}
保存图像位于项目的根目录中,就像保存页面 HTML 文件一样。
首先,我会让 Nginx 在维护模式下发送 503(服务不可用)HTTP 响应代码。这可以防止搜索引擎在离线时索引您的维护页面。
其次,我会将维护页面的所有静态资产放在一个单独的目录中(例如 maintenance_files),以便它们很好地耦合在一起,并且可以很容易地从重写中排除。
此外,我希望有一种方法可以排除某些人,以便他们能够执行维护任务。这可以通过 IP 或检查 cookie 来完成。然后,您可以 set/unset 使用一段 javascript 粘贴到浏览器检查器中的 cookie。
server {
error_page 503 @maintenance;
# Set to 1 to enable holding page
set $maintenance 0;
# Always allow access for clients that have the 'maintainer' cookie set
if ($http_cookie ~* "maintainer") {
set $maintenance 0;
}
location / {
if ($maintenance) {
return 503;
}
}
location @maintenance {
# You might want to use a different document root for the maintenance
# files so you can freely move and shuffle in the default document root
# during maintenance.
#root /var/www/maintenance/;
if ($uri !~ ^/maintenance_files/) {
rewrite ^(.*)$ /holding.html break;
}
}
}
为了获得维护权限,请将其粘贴到您的浏览器检查器中:
document.cookie="maintainer=1";
要删除该 cookie:
document.cookie = "maintainer=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
或者,您可以检查磁盘上是否存在文件,而不是将变量 $maintenance
设置为 1。这样你就不必重新加载你的 Nginx 配置来将你的站点置于维护模式。但是,您会在每个请求上添加额外的磁盘查找,这可能是您选择该选项的原因。在这种情况下,运行 在更改 $maintenance 值后执行以下命令:
sudo service nginx force-reload