CentOS下搭建Zdir目录列表程序
Zdir是一款相对比较流行的目录列表程序,与Directory Lister不同的是Zdir可以用户登录以后实现文件上传,可以实现文件分享、二维码等功能。相比起其他的目录列表程序,Zdir也是比较轻量、简洁的,受到了很多人的欢迎。它并没有像Directory Lister那样最朴素的直链功能,但仍然不失为一款非常优秀的目录列表程序,搭建一个练练手吧。
# 安装好lnmp环境,进入网站目录,下载一键安装脚本 $ wget http://soft.xiaoz.org/zdir/sh/zdir.sh # 默认安装是在/data/apps/zdir目录下,现在需要改变默认的路径为网站路径 $ sudo bash zdir.sh install
很快就会安装完成。完成后输入http://yourdomain.com:6800,点击“登录”,按照页面显示的要求设置用户名和密码,之后就可以登陆了。zdir默认是在6080端口运行,输入不方便,这需要我们设置反向代理,把6080端口的请求转发到http的80端口,再启用https访问跳转到443端口,一切就完美了。
# 进入lnmp的网站配置文件目录,这里列出了vps上所有网站的配置文件 $ cd /usr/local/nginx/conf/vhost # 备份网站的配置文件,假设你的网站域名是xxx.yourdomain.com $ cp xxx.yourdomain.com.conf xxx.yourdomain.com.conf.bak
将以下配置写入xxx.yourdomain.com.conf文件中
location = / { proxy_pass http://127.0.0.1:6080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 匹配Vue静态文件目录,和public公共文件夹目录 location ~* /(assets|public|api|admin) { #如果是图片等静态文件,添加Expires头部 if ( $uri ~* .*\.(gif|jpg|jpeg|png|bmp|webp|swf|flv|mp4|ts|ico|js|css|svg|ico)$ ) { expires 7d; } client_max_body_size 1024m; proxy_pass http://127.0.0.1:6080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 非/ 和非 /assets目录的时候进行重定向来去掉/public,/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到,优先级最低 location / { rewrite ^/(.*) /public/$1; }
这里贴一份我自己网站的配置文件
server { listen 80; #listen [::]:80; server_name xxx.yourdomain.com ; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/xxx.yourdomain.com; #include rewrite/other.conf; #error_page 404 /404.html; # Deny access to PHP files in specific directory #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } include enable-php-pathinfo.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } location / { return 301 https://$host$request_uri; } access_log /home/wwwlogs/xxx.yourdomain.com.log; } server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name xxx.yourdomain.com ; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/xxx.yourdomain.com; ssl_certificate /usr/local/nginx/conf/ssl/xxx.yourdomain.com/fullchain.cer; ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.yourdomain.com/xxx.yourdomain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; ssl_session_cache builtin:1000 shared:SSL:10m; # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048 ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem; location = / { proxy_pass http://127.0.0.1:6080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* /(assets|public|api|admin) { if ( $uri ~* .*\.(gif|jpg|jpeg|png|bmp|webp|swf|flv|mp4|ts|ico|js|css|svg|ico)$ ) { expires 7d; } client_max_body_size 1024m; proxy_pass http://127.0.0.1:6080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { rewrite ^/(.*) /public/$1; } include rewrite/other.conf; #error_page 404 /404.html; # Deny access to PHP files in specific directory #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } include enable-php-pathinfo.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /home/wwwlogs/xxx.yourdomain.com.log; }
记得把配置文件中的xxx.yourdomain.com换成自己的域名。效果如下,直接用域名访问,不用再带6080这个尾巴了。