重定向 Nginx 虚拟主机/URL,除非在特定 URL 上



对于以下情况,是否有人有代码可以放入某个地方的Nginx块中。

我让我们的网站通过 Cloudflare (url.com),但他们不支持超过 150mb 的上传,我们有高达 300mb 的上传。他们的解决方案是创建一个未启用Cloudflare的子域(upload.url.com 并将其用于上传。我这样做了,没问题,并通过上传 URL 硬编码了指向上传页面的链接。现在的问题是,我的网站有链接,这些链接只是"/page",它通过 upload.url.com/page,是否有办法在 Nginx 块中设置它,以便任何 upload.url.com 只能在我希望它访问的上传页面上工作,如果他们点击回到网站的任何其他部分,它将确保它通过"url.com"加载该页面?

server {
    server_name "upload.example.com";
    location ^~ /page {
        return 301 http://example.com$uri;
    }
}

或者,如果您的所有上传页面都可以通过URL中的特定部分进行识别。

server {
    server_name "upload.example.com";
    location / {
        location ~* "^(?!.*?upload).*$" {
            return 301 http://example.com$uri;
        }
    }
}

或者,如果您只有一个有效位置。

server {
    server_name "upload.example.com";
    location = /upload-script {
        # Code to process upload
    }
    # Redirect anything else!
    location / {
        return 301 http://example.com$uri;
    }
}

不确定我是否正确得到了您想要的内容,您想将任何不是根目录的 URI 重定向到主域,请尝试此操作

server {
  server_name upload.example.com;
  location = / {
    #pass to the upload script;
  }
  location / {
    # redirect to the main domain
    return 301 http://example.com$request_uri$is_args$query_string;
  }
}

最新更新