Contents

Nginx作为文件下载服务器

Nginx conf 配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
server {
    listen      80;
    server_name  10.43.0.0;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
    location / {
        root  /usr/share/nginx/html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /usr/share/nginx/html;
    }
    location /build_results/ {
        proxy_set_header Host $http_host;
        root  /data/jenkins/;
        index  index.html index.htm;
        autoindex on; # 开启目录文件列表
        autoindex_exact_size off; # 显示出文件的确切大小,单位是bytes
        autoindex_localtime on; # 显示的文件时间为文件的服务器时间
        charset utf-8,gbk; # 避免中文乱码
        #add_after_body /autoindex.html; #添加html内容, 此文件应放置在 location / 配置的 root目录下
        #add_before_body /autoindex.html;

        #auth_basic "Restricted"; #启用账号密码限制  #这里是验证时的提示信息
        #auth_basic_user_file /etc/nginx/passwd; #这里是密码文件
        #limit_conn one 8;        #并发数
        #limit_rate 100k;        #单个线程最大下载速度,单位KB/s
        #allow 192.168.1.0/24;    #添加允许访问下载 IP 地址段
        #allow 172.17.0.0/16;
        #deny  all; #禁用其他
    }
}

配置Basic Auth权限认证

我们需要htpassword来创建和生成加密的用户用于基础认证(Basic Authentication) ubuntu 安装 sudo apt-get install apache2-utils

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
htpasswd 命令参数
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

sudo htpasswd -c /etc/nginx/passwd Postgres #创建密码文件以及用户名=

#/etc/nginx/passwd 文件格式如下:
loginuser:password

#Nginx配置文件新增内容:
location /secret {
    auth_basic "Please input password"; #这里是验证时的提示信息
    auth_basic_user_file /etc/nginx/passwd; # 创建的passwd文件
}

优化显示页面

对日期进行格式化,并添加导航路径 #add_after_body /autoindex.html; #添加html内容, 此文件应放置在 location / 配置的 root目录下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<script>
    var formatDate = function (datetime, format) {
        if (!isNaN(Date.parse(datetime))) {
            d = new Date(datetime);
            pad = function (s) { return s < 10 ? '0' + s : s };
            mon = function (m) { return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][m] };
            datetime = format
                .replace('%Y', d.getFullYear())
                .replace('%m', pad(d.getMonth() + 1))
                .replace('%d', pad(d.getDate()))
                .replace('%H', pad(d.getHours()))
                .replace('%M', pad(d.getMinutes()))
                .replace('%S', pad(d.getSeconds()))
                .replace('%b', mon(d.getMonth()));
        }
        return datetime;
    };
    window.onload = function () {
        var datetime_format = '%Y-%m-%d %H:%M';
        setTimeout(function () {
            var title = document.getElementsByTagName("h1")[0];
            var lastName;
            var titlehtml = document.title.replace(/\/$/, '').split('/').slice(1).reduce(function (acc, v, i, a) {
                lastName = v;
                return acc + '<a href="/' + a.slice(0, i + 1).join('/') + '/">' + v + '</a>/';
            }, 'Index of /');
            title.innerHTML = titlehtml + '<span style="margin-left: 100px;">' + lastName + '</span>';
        }, 1);
        setTimeout(function () {
            var pre = document.getElementsByTagName("pre")[0];
            var bodys = pre.innerHTML.split("\n");
            var list = [];
            for (var i in bodys) {
                var bodyline = bodys[i];
                if (m = /\s*<a href="(.+?)">(.+?)<\/a>\s+(\S+)\s+(\S+)\s+(\S+)\s*/.exec(bodyline)) {
                    filename = m[1];
                    datetime = m[3] + ' ' + m[4];
                    size = m[5];
                    list.push(bodyline.replace(datetime, formatDate(datetime, datetime_format)));
                } else {
                    list.push(bodyline);
                }
            }
            pre.innerHTML = list.join("\n");
        }, 1);
    };
</script>
<style>
    a {text-decoration: none;}
    a:visited {text-decoration: none;}
    a:hover {text-decoration: none;}
    a:active {text-decoration: none;}
    h1 {font-size: 20px;}
</style>