nginx 重定向在位置指令中不起作用
nginx redirection not working inside location directive
我有两个位置指令都包含条件重定向。
server {
listen 443 ssl;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/cert.key;
server_name services.gixxx.de;
location / {
if (-f $document_root/maintenance.on) {
return 503;
}
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
}
location /api {
if (-f $document_root/maintenance.on) {
return 503;
}
proxy_read_timeout 120;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_pass http://serviceapp;
}
upstream serviceapp {
server serviceapp:3000;
}
当我在路由文件夹上创建文档名称 maintenance.on
时,它适用于第一个 location / {
指令,但不适用于 location /api {
部分。
这里出了什么问题。
您没有为第二个块定义 root
。您应该将 root
语句移动到外部块中,并允许它被两个 location
块继承。
我有两个位置指令都包含条件重定向。
server {
listen 443 ssl;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/cert.key;
server_name services.gixxx.de;
location / {
if (-f $document_root/maintenance.on) {
return 503;
}
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
}
location /api {
if (-f $document_root/maintenance.on) {
return 503;
}
proxy_read_timeout 120;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_pass http://serviceapp;
}
upstream serviceapp {
server serviceapp:3000;
}
当我在路由文件夹上创建文档名称 maintenance.on
时,它适用于第一个 location / {
指令,但不适用于 location /api {
部分。
这里出了什么问题。
您没有为第二个块定义 root
。您应该将 root
语句移动到外部块中,并允许它被两个 location
块继承。