安全上传

我有一个快速的小技巧,我认为可以为需要登录的网站提供安全的上传功能。

基本上,你可以按照 Authentication Based on Subrequest Result | NGINX Documentation 的说明为上传功能配置子请求认证。唯一的问题是,我无法找到一个在开启“需要登录”时返回 403/401 状态的 URL,因此未登录时访问上传链接会返回 500 错误。这种情况只会发生在有人获得了上传 URL 却在未登录状态下尝试访问时,所以看起来问题并不严重。

实现方式大致如下:

# JP
    location = /auth {
        internal;
        proxy_pass http://discourse/categories;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    } 
    # END JP
    location ~ ^/uploads/ {

      auth_request /auth; #$JP
      # 注意:我们无法在顶层定义头信息并继承,这确实很烦人。
      #
2 个赞