http { upstream liwy_server { server 192.168.2.13:8081; server 192.168.2.13:8082; } server { listen 80; server_name www.liwy-nginx.com; location / { root html; index index.html; } location /static/ { root html; } location /apis/ { proxy_pass http://liwy_server; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }}二、防盗链

盗链,大略来说便是别人未经我们的许可,在他们的网站上直接链接到我们网站的资源,让访问他们网站的用户可以直接获取我们的资源。
比如,我们的网站上有一张精美的图片,另一个网站通过 <img src="我们网站上图片的链接"> 这样的办法把我们的图片展示在他们的页面上,这便是盗链。

Nginx 防盗链紧张是通过对要求头中的 Referer 字段进行检讨和判断来实现的。
Referer 字段记录了要求资源的来源地址,来见告我们这个要求是从哪里来的。

Nginx 利用 valid_referers 定义 Referer 的合法来源, 然后利用 $invalid_referer 变量来判断是 Referer 是否合法,从而判断是否被盗链以及后续处理逻辑:

备忘录模式jspNginx 备忘录  09 动静分别防盗链目次阅读拜访掌握 jQuery

Syntax: valid_referers none | blocked | server_names | string ...;Default: —Context: server, locationnone:表示没有 Referer 头的要求是合法的。
blocked:表示 Referer 头被防火墙或者代理做事器隐蔽的要求是合法的。
server_names:设置合法的域名。

server { listen 80; server_name www.liwy-nginx.com; location ~ \.(html|gif|jpg|jpeg|png|css|js)$ { # 定义合法的 referer 来源 valid_referers none blocked .liwy-nginx.com; # 用 $invalid_referer 判断 referer 是否合法 # 如果不合法,就返回 403 禁止访问的状态码 if ($invalid_referer) { return 403; } root html; } # 配置 403 缺点码对应的缺点页面 error_page 403 /40x.html; location = /40x.html { root html; }}

利用 curl 工具修正 referer 测试下:

# 只显示头信息curl -I http://www.liwy-nginx.com# 设置 referercurl -e "http://www.liwy-nginx.com" \www.liwy-nginx.com/imgs/liwy.jpg;三、目录浏览

目录浏览功能一样平常用来共享文件,许可用户浏览和下载各种文件。
它许可用户以列表的办法,查看做事器上指定目录下的文件内容。

# 启用或禁用目录列表输出Syntax: autoindex on | off;Default: autoindex off;Context: http, server, location# 设置目录列表输出格式Syntax: autoindex_format html | xml | json | jsonp;Default: autoindex_format html;Context: http, server, location# 对付 html 格式,是否展示文件大小Syntax: autoindex_exact_size on | off;Default: autoindex_exact_size on;Context: http, server, location

示例:

server { listen 80; server_name www.liwy-nginx.com; location / { root html; index index.html; } location /download { root html/res; # 开启目录浏览功能 autoindex on; # 显示文件大小的时候,显示单位 autoindex_exact_size off; }}四、访问掌握

设置 IP 的黑白名单,用于掌握哪些 IP 可以访问 Nginx 或者 哪些 IP 不能访问 Nginx。

# 许可访问指定的网络或地址Syntax: allow address | CIDR | unix: | all;Default: —Context: http, server, location, limit_except# 谢绝访问指定的网络或地址Syntax: deny address | CIDR | unix: | all;Default: —Context: http, server, location, limit_except

示例:

server { listen 80; server_name www.liwy-nginx.com; # 设置禁止访问的 IP deny 192.168.0.105; deny 192.168.0.104; deny 192.168.1.0/24; # 设置许可访问的 IP allow 192.168.1.1; allow all; location / { root html; index index.html; }}