Здpавствуй, Vadim!
Среда 31 Октября 2018 16:52, ты писал(а) мне, в сообщении по ссылке
area://ru.linux.chainik?msgid=2:5030/1900.113+bb6cc639:
VM> Nginx и фтп уже есть. Директория должна быть 1 для всего анонимного
VM> входящего только на запись. И 1 для всех, кто заходит с локалки на
VM> чтение и запись. Хотя, возможно, для загрузки можно было бы сделать
VM> что-то проще. Hу, чтобы через браузер прямо.
Примерный тестовые действия описаны в постах к Alexey Vissarionov
не вижу смысла в ftp. Тебе не просто нужен дефолтный nginx а собранный
с модулем http://nginx.org/ru/docs/http/ngx_http_dav_module.html
Как разграничивать пользователей
загугли например https://debian.pro/1799 нормальное описание
Из старых личных записок, сылки вивимо уже мертвы
Вдохновения:
http://xandroskin.ru/it/svoj-webdav-server-na-nginx/495
nginx-1.4.4 собрал со следующими модулями
# cat _configure.sh
# --add-module=/usr/local/src/nginx-upload-module-master
export LUAJIT_INC=/usr/local/include/luajit-2.0
export LUAJIT_LIB=/usr/local/lib/
./configure --sbin-path=/usr/local/sbin \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/nginx-error.log \
--http-log-path=/var/log/nginx/nginx-http.log \
--pid-path=/var/run/nginx.pid \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_mp4_module --add-module=/usr/local/src/nginx-rtmp-module \
--with-http_flv_module \
--with-http_dav_module \
--add-module=/usr/local/src/ngx_devel_kit-0.2.19 \
--add-module=/usr/local/src/lua-nginx-module-0.9.7 \
--add-module=/usr/local/src/nginx-upload-progress-module-master \
--add-module=/usr/local/src/nginx-dav-ext-module-master
make -j2
Мой Конфиг:
# cat /etc/nginx/nginx-seafile.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
#rtmp_auto_push on;
#-----------------------------------------------------
# Потоковое видео stream с модулем nginx-rtmp-module
# worker_processes 1; должен быть один.
#----------------------------------------------------
rtmp {
server {
listen 1935;
application myapp {
live on;
}
}
}
#---------------------------------------------------
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#-----------------------------------------------------
# Потоковое видео stream с модулем nginx-rtmp-module
# worker_processes 1; должен быть один.
#----------------------------------------------------
# rtmp {
#server {
# listen 1935;
# application myapp {
# live on;
# }
# }
#}
#---------------------------------------------------
server {
listen 80;
listen 10.1.0.147:8000;
server_name 10.1.0.147;
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
}
location /media {
# root /home/user/haiwen/seafile-server-1.6.1/seahub;
root /xfs-100GB-01-local/seafile/seahub;
}
#----------------------------------------------
# Для настройки связки nginx+Apache
#---------------------------------------------
# location /portal {
##try_files $uri $uri/ /index.php?q=$uri&$args;
# proxy_pass http://127.0.0.1:8080/portal/;
# proxy_redirect off;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# client_max_body_size 10m;
# client_body_buffer_size 128k;
# proxy_connect_timeout 90;
# proxy_send_timeout 90;
# proxy_read_timeout 90;
# proxy_buffer_size 4k;
# proxy_buffers 4 32k;
# proxy_busy_buffers_size 64k;
# proxy_temp_file_write_size 10m;
# }
# location /engine {
# root /var/www/html/portal/engine;
# }
#------------------------------------------------
# Hастройки на работу с php
#------------------------------------------------
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
# location ^~ /irchub/ {
location ~* /irchub/ {
index index.html index.htm index.php;
root /var/www/html;
# Запрос http://seafile.mnsk.rw/irchub/test.txt
# преобразован в /var/www/html/irchub/test.txt
access_log /var/log/nginx/irchub.access.log;
error_log /var/log/nginx/irchub.error.log;
}
#------------------------------------------------
#----------------------------------------------------
# Раздаем mp4 с помощью модуля ngx_http_mp4_module
#---------------------------------------------------
location ~* /video/ {
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;
root /xfs-100GB-02-local;
}
#location ~* /uploader/ {
# mp4;
# mp4_buffer_size 1m;
# mp4_max_buffer_size 5m;
# root /;
#}
#-----------------------------------------------
location ~* /dchub01/ {
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
flv;
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;
root /NFS;
}
location /lua_content {
# MIME type determined by default_type:
default_type 'text/plain';
content_by_lua "ngx.say('Hello,world!')";
}
location ~* /webdav/ {
root /NFS;
# client_body_temp_path /NFS/client_temp;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access group:rw all:r;
client_max_body_size 0;
#limit_except GET {
# allow 10.1.2.181/32;
# deny all;
# }
autoindex on;
auth_basic "Please login for access";
auth_basic_user_file /NFS/.passwd.dav;
}
###end webdav#####################################
###end server
}
}
Hадо понимать, что обращаясь к директории /webdav/ пользователь попадает по
физическому пути /NFS/webdav/
конфиг из статьи:
location / {
#указываем нужные методы
dav_methods PUT DELETE MKCOL COPY MOVE;
#работает,только если включали дополнительный модуль
dav_ext_methods PROPFIND OPTIONS;
#создавать промежуточные каталоги в методе PUT
create_full_put_path on;
#права доступа для создаваемых объектов
dav_access group:rw all:r;
#добавляем авторизацию
auth_basic "Please login for access";
#путь до файла с хэшем пароля
auth_basic_user_file /mnt/disk/.passwd.dav;
#разрешаем просмотр директории
autoindex on;
#отключаем ограничение по размеру на загрузку файлов
client_max_body_size 0;
#путь до корня выделенной под WebDAV директории
root /mnt/disk;
}
Цитата из статьи:
Создаем пару логин+пароль для авторизации на нашем сервере.
Авторизация по протоколу HTTP Basic Authentication в nginx предоставляется с
помощью модуля ngx_http_auth_basic_module,
который включен по умолчанию. Генерируем хэш пароля с помощью утилиты из набора
apache-utils htpasswd или
любым онлайн генератором файлов .htpasswd.
Для тестирования использовал
NetDrive он отлично заработал, когда откомпилировал дополнительный модуль
--with-http_dav_module и с включенной опцией в конфиге
dav_ext_methods PROPFIND OPTIONS;
Тема на форуме:
http://forum.ixbt.com/topic.cgi?id=94:63
консольная прога, под linux.
http://www.webdav.org/cadaver/
http://savannah.nongnu.org/projects/davfs2
порт
http://www.phtagr.org/2009/04/01/cadaver-for-windows/
С уважением - Andrey