Мы используем опцию client_body_in_file_only с nginx, чтобы разрешить загрузку файлов через 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;
}
Это работает, но процесс веб-сервера (Mongrel), который обрабатывает запрос, должен sudo
временный файл, поступающий в headers['X-FILE']
, прежде чем он сможет сделатьничего с этим.Это связано с тем, что временный файл имеет права доступа 600
.
Я не доволен этим подходом, который требует, чтобы мы отредактировали файл /etc/sudoers
, чтобы пользователь веб-сервера мог делать sudo chmod
без пароля.Это выглядит очень небезопасно.
Есть ли способ, с помощью конфигурации nginx, изменить разрешения для создаваемого временного файла, например, на 775?
РЕДАКТИРОВАТЬ: я только что попытался изменитьзначение параметра umask
в конфигурации init nginx, затем перезапуск nginx, но это не помогло.Это было на 0022
, я изменил его на 0002
.В обоих случаях он имеет 600 разрешений.
EDIT2: я также пытался добавить эту строку под строкой proxy_redirect
в конфигурации nginx.
proxy_store_access user:rw group:rw all:r;
Но это не такне имеет значения - он все еще имеет user:rw