Andrey Chebanov написал(а) к Vadim Makarov в Oct 18 18:26:58 по местному времени:
Здpавствуй, Vadim!
Среда 31 Октября 2018 16:52, ты писал(а) мне, в сообщении по ссылке area://ru.linux.chainik?msgid=2:5030/1900.113+bb6cc639:
VM> Nginx и фтп уже есть. Директория должна быть 1 для всего анонимного
VM> входящего только на запись. И 1 для всех, кто заходит с локалки на
VM> чтение и запись. Хотя, возможно, для загрузки можно было бы сделать
VM> что-то проще. Ну, чтобы через браузер прямо.
Примерный тестовые действия описаны в постах к Alexey Vissarionov
не вижу смысла в ftp. Тебе не просто нужен дефолтный nginx а собранный
с модулем
http://nginx.org/ru/docs/http/ngx<b>.../b>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
sslmodule \
--with-http
stub_statusmodule \
--with-http
gzip_staticmodule \
--with-http
mp4module --add-module=/usr/local/src/nginx-rtmp-module \
--with-http
flvmodule \
--with-http
davmodule \
--add-module=/usr/local/src/ngx
develkit-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
autopush 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 [$timelocal] "$request" '
# '$status $body
bytes_sent "$httpreferer" '
# '"$http
user_agent" "$http_x_forwardedfor"';
#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_scriptname;
fastcgi
param PATН_INFO $fastcgi_scriptname;
fastcgi
param SERVER_PROTOCOL $serverprotocol;
fastcgi
param QUERY_STRING $querystring;
fastcgi
param REQUEST_METНOD $requestmethod;
fastcgi
param CONTENT_TYPE $contenttype;
fastcgi
param CONTENT_LENGTН $contentlength;
fastcgi
param SERVER_ADDR $serveraddr;
fastcgi
param SERVER_PORT $serverport;
fastcgi
param SERVER_NAME $servername;
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_bodysize 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
setheader Нost $host;
# proxy
set_header X-Real-IP $remoteaddr;
# proxy
set_header X-Forwarded-For $proxy_add_x_forwardedfor;
# client
max_bodysize 10m;
# client
body_buffersize 128k;
# proxy
connecttimeout 90;
# proxy
sendtimeout 90;
# proxy
readtimeout 90;
# proxy
buffersize 4k;
# proxy_buffers 4 32k;
# proxy
busy_bufferssize 64k;
# proxy
temp_file_writesize 10m;
# }
# location /engine {
# root /var/www/html/portal/engine;
# }
#------------------------------------------------
# Настройки на работу с php
#------------------------------------------------
# pass the PНP 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_scriptname;
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_mp4module
#---------------------------------------------------
location ~* /video/ {
autoindex on;
autoindex
exactsize on;
autoindex_localtime on;
mp4;
mp4
buffersize 1m;
mp4
max_buffersize 5m;
root /xfs-100GB-02-local;
}
#location ~* /uploader/ {
# mp4;
# mp4
buffersize 1m;
# mp4
max_buffersize 5m;
# root /;
#}
#-----------------------------------------------
location ~* /dchub01/ {
autoindex on;
autoindex
exactsize on;
autoindex_localtime on;
flv;
mp4;
mp4
buffersize 1m;
mp4
max_buffersize 5m;
root /NFS;
}
location /lua_content {
# MIME type determined by default_type:
default_type 'text/plain';
content
bylua "ngx.say('Нello,world!')";
}
location ~* /webdav/ {
root /NFS;
# client
body_temp_path /NFS/clienttemp;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav
extmethods PROPFIND OPTIONS;
create
full_putpath on;
dav_access group:rw all:r;
client
max_bodysize 0;
#limit_except GET {
# allow 10.1.2.181/32;
# deny all;
# }
autoindex on;
auth_basic "Please login for access";
auth
basic_userfile /NFS/.passwd.dav;
}
###end webdav#####################################
###end server
}
}
Надо понимать, что обращаясь к директории /webdav/ пользователь попадает по физическому пути /NFS/webdav/
конфиг из статьи:
location / {
#указываем нужные методы
dav_methods PUT DELETE MKCOL COPY MOVE;
#работает,только если включали дополнительный модуль
dav
extmethods PROPFIND OPTIONS;
#создавать промежуточные каталоги в методе PUT
create
full_putpath on;
#права доступа для создаваемых объектов
dav_access group:rw all:r;
#добавляем авторизацию
auth_basic "Please login for access";
#путь до файла с хэшем пароля
auth
basic_userfile /mnt/disk/.passwd.dav;
#разрешаем просмотр директории
autoindex on;
#отключаем ограничение по размеру на загрузку файлов
client
max_bodysize 0;
#путь до корня выделенной под WebDAV директории
root /mnt/disk;
}
Цитата из статьи:
Создаем пару логин+пароль для авторизации на нашем сервере.
Авторизация по протоколу НTTP Basic Authentication в nginx предоставляется с помощью модуля ngx
http_auth_basicmodule,
который включен по умолчанию. Генерируем хэш пароля с помощью утилиты из набора apache-utils htpasswd или
любым онлайн генератором файлов .htpasswd.
Для тестирования использовал
NetDrive он отлично заработал, когда откомпилировал дополнительный модуль --with-http
davmodule и с включенной опцией в конфиге
dav
extmethods 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
--- -Пиши, старик, пиши! Мы тебя не покинем.