nginx目录权限设置

刚在知乎上看到说,如果用VPS下载电影涉及版权问题,被人举报的话,是属于触犯国外法律的。不光VPS被封,个人也会遭殃。

如果这些电影只有你自己能看也就算了,可是如果是任何人都能访问观看,那么问题就严重了。一想到我的nginx目录是公开的,吓得我赶紧去找关于nginx目录权限设置的方法。

我参考的是这篇文章,我要实现的是以用户密码身份访问目录。

首先,检查一下你的VPS是否自带htpasswd命令。如果没有的话,可以下载了htpasswd.py文件

wget http://trac.edgewall.org/export/10770/trunk/contrib/htpasswd.py

然后执行命令

1
2
chmod 777 htpasswd.py
./htpasswd.py -b -c htpasswd username password

-c为生成密码文件,-b为批处理模式,htpasswd是生成的文件名,username是用户名,password是密码。注意,这里的密码不管你输入多少位,最终只会截取前8位,即只有前8位密码是有效的。

接下来修改htpasswd文件的权限,并把它放入/etc/nginx目录下,执行命令

1
2
chmod 444 htpasswd
mv htpasswd /etc/nginx

刚才的设置权限很关键,如果你的htpasswd文件创建用户不是nginx的话,那么它的权限最少也应该是444,即所有人都可读。否则就算你输入对了密码,服务器依然会提示500错误。

最后修改一下nginx配置文件,比方说我的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
location /download {
root /usr/share/nginx;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

location /download/private {
root /usr/share/nginx;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

说明一下,这里我的/download目录是公开的,但是它的子目录/private是必须验证用户名和密码之后才能浏览的。前面说过,这个密码最多只支持8位。

最后重启一下nginx服务

1
service nginx restart

好了有了这层保护之后,终于不用担心被人举报了。

avatar

chilihotpot

You Are The JavaScript In My HTML