我有这个用于网站的 nginx 配置,该网站有自己的 Web 服务器,也就是说,nginx 作为反向代理工作。
省略了一些配置部分:
$ cat /etc/nginx/sites-available/default
server {
listen 80 default_server;
[.........];
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
[.........];
return 301 https://my_website.com$request_uri;
}
server {
listen 443 ssl default_server;
[.........];
location / {
[.........];
proxy_redirect http://localhost:1234 https://my_website.com;
}
location /assets/ {
alias /opt/my_website/assets;
}
现在我正在尝试添加一个维护页面:
location / {
[.........];
proxy_redirect http://localhost:1234 https://my_website.com;
}
location /assets/ {
alias /opt/my_website/assets;
}
# here it is
if (-f /opt/my_website/maintenance_on.html) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
但它根本不起作用——当我创建页面时什么也没有发生。
答案1
该rewrite
指令生成 URI。您需要一个root
指令将其转换为本地路径名:
location @maintenance {
root /opt/my_website/html;
rewrite ^ /maintenance.html break;
}
看这个文件了解详情。