- A+
再实际的web项目开发生产环境中,往往都是动静分离的,目的就是为了提高访问效率,方便后期扩展已经资源共用等,作为一个资源服务器来说,我们通常是这样配置的,如下:
基本配置
server { listen 80; server_name file.baiked.com; charset utf-8; #root 指令用来指定文件在服务器上的基路径 root /data/statics; #location指令用来映射请求到本地文件系统 location / { autoindex on; # 索引 autoindex_exact_size on; # 显示文件大小 autoindex_localtime on; # 显示文件时间 } }
配置完成后,启动nginx,访问如下:
安全设置
htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
htpasswd(选项)(参数)
- -c:创建一个加密文件;
- -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
- -m:默认采用MD5算法对密码进行加密;
- -d:采用CRYPT算法对密码进行加密;
- -p:不对密码进行进行加密,即明文密码;
- -s:采用SHA算法对密码进行加密;
- -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
- -D:删除指定的用户。
在目录下生成一个filemgr.db文件,用户名baiked,密码:file,默认采用MD5加密方式。
htpasswd -bc filemgr.db baiked file
Nginx配置
server { listen 80; server_name file.baiked.com; charset utf-8; root /data/static; location / { autoindex on; # 索引 autoindex_exact_size on; # 显示文件大小 autoindex_localtime on; # 显示文件时间 auth_basic "请输入用户名密码"; auth_basic_user_file /data/filemgr.db; } }
重启Nginx访问:
图片防盗链
如果服务器的图片被别的网站盗链,将影响服务器的带宽以及访问速度,这时我们就需要设置图片文件或视频文件的防盗链功能。
防盗链功能,简单来说就是你可以直接访问该资源,但是不能将我的资源链接放到你自己的服务器上让别人访问,尤其是图片或视频这种比较大的文件,容易导致服务器响应很慢。
要实现防盗链,需要了解HTTP协议中的请求头部的Referer头域和采用URL的格式表示访问当前网页或者文件的源地址。通过该头域的值,我们可以检测到访问目标资源的源地址。这样,如果我们检测到Referer头域中的值并不是自己站点内的URL,就采取组织措施,实现防盗链。需要注意是,由于Referer头域中的值可以被更改的,因此该方法不能完全阻止所有盗链行为。
server { listen 80; server_name file.baiked.com; charset utf-8; #root 指令用来指定文件在服务器上的基路径 root /data/static; #location指令用来映射请求到本地文件系统 location ~*^.+\.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers none blocked file.baiked.com; if ($invalid_referer) { #return 403; rewrite ^/ http://file.baiked.com/403.jpg; } } }
Nginx配置中有一个指令valid_referers,用来获取Referer头域中的值,并且根据该值的情况给Nginx全局变量$invalid_referer的值,如果Referer头域中没有符合valid_referers指令配置的值,$invalid_referer变量将会被赋值为1。
valid_referer指令的语法结构为:
valid_referers none | blocked | server_names | string ....; none 检测Referer头域不存在的请求 blocked 检测Referer头域的值被防火墙或者代理服务器删除或伪装的情况。 这种情况下,该头域的值不以“http://”或者“https://”开头 server_names 设置一个或多个URL,检测Referer头域的值是否是这些URL中的某个。
重启Nginx服务,测试一下图片链接:http://file.baiked.com/browser.png
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫