一、动静分离
为了提高网站的响应速度,减轻后端服务器的负载,对于静态资源,如图片、js、css 等文件,可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。对于用户请求的动态文件,如 servlet、jsp,则转发给后端服务器处理。
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 是否合法,从而判断是否被盗链以及后续处理逻辑:
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
- none:表示没有 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
# 设置 referer
curl -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;
}
}
本文暂时没有评论,来添加一个吧(●'◡'●)