微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx 重定向在位置指令中不起作用

如何解决nginx 重定向在位置指令中不起作用

我有两个位置指令,都包含条件重定向

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 块继承。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。