【发布时间】:2019-07-09 12:52:23
【问题描述】:
我们在 nginx 中使用 client_body_in_file_only 选项,以允许通过 Ajax 上传文件。配置如下所示:
location ~ ^(\/path1|\path2)$ {
limit_except POST { deny all; }
client_body_temp_path /path/to/app/tmp;
client_body_in_file_only on;
client_body_buffer_size 128K;
client_max_body_size 1000M;
#this option is a quick hack to make sure files get saved on (ie this type of request goes to) on a specific server
proxy_pass http://admin;
proxy_pass_request_headers on;
proxy_set_header X-FILE $request_body_file;
proxy_set_body off;
proxy_redirect off;
# might not need?
proxy_read_timeout 3m;
}
这可行,但处理请求的 Web 服务器进程 (Mongrel) 必须先 sudo headers['X-FILE'] 中的临时文件,然后才能对其执行任何操作。这是因为临时文件带有600 权限。
我对这种方法不满意,它要求我们编辑/etc/sudoers 文件以允许Web 服务器用户在没有密码的情况下执行sudo chmod。感觉很不安全。
有没有办法通过 nginx 配置更改创建的临时文件的权限,例如更改为 775?
编辑:我只是尝试在 nginx 初始化配置中更改 umask 选项的值,然后重新启动 nginx,但它没有帮助。原来是0022,我把它改成了0002。在这两种情况下,它都有 600 个权限。
EDIT2:我还尝试在 nginx 配置中的 proxy_redirect 行下添加此行。
proxy_store_access user:rw group:rw all:r;
但是,它没有任何区别 - 它仍然只有 user:rw
【问题讨论】: