1 为静态资源提供服务
为了提高可读性,因此就构建了新的 server 配置文件如下,需要理清的就是 root
和 alias
的区别:
root
:使用root
,访问文件根目录的绝对路径就是root
指定的值加上location
指定的值alias
:使用alias
,相当于location
为alias
做一个自定义的别名,访问文件根目录的绝对路径就是alias
指定的路径,同时alias
如果后面使用了/
结束,那么location
也需要使用/
结尾,否则会找不到文件
server {
listen 8080;
server_name localhost;
# 真实的路径是root指定的值加上location指定的值
# 网页文件
location / {
root /home/frontEnd;
}
# 图片等静态资源文件
# 如果这么配置,那么访问 localhost:8080/static/1.jpg时
# 它访问到的文件就应该是 /workspaces/foodie/static/1.jpg
#location /static {
# root /workspaces/foodie;
#}
# 真实路径都是 alias 指定的路径
# 如果这么配置,那么访问 localhost:8080/static/1.jpg时
# 它访问到的文件就应该是 /workspaces/foodie/1.jpg
# alias 如果后面使用了 “/” 结束,那么 location 也需要使用 “/” 结尾,否则会找不到文件
location /static {
# 别名
alias /workspaces/foodie;
}
}
1.1 location
的匹配规则
空格
:默认匹配,普通匹配
location / {
root /home;
}
=
:精确匹配,要求请求字符串与其严格匹配,成功则立即处理,nginx停止搜索其他匹配。
location = /imooc/img/face1.png {
root /home;
}
^~
:以某个字符路径开头,并要求一旦匹配到就会立即处理,不再去匹配其他的那些个正则 uri,一般用来匹配目录
location ^~ /ima {
root /workspaces/foodie;
}
~*
:匹配正则表达式,不区分大小写~
:匹配正则表达式,区分大小写
location ~ /faces {
root /workspaces/foodie;
}
2 使用 Gzip 压缩提升请求效率
在 《Nginx入门笔记》 的核心配置文件里就已经提及过 Gzip
,配置内容:
# 打开 gzip 压缩功能,目的:提高传输效率,节约带宽
gzip on;
# 定义 限制最小压缩,小于1字节文件不会压缩
gzip_min_length 1;
# 定义压缩的级别(压缩比,文件越大,压缩越多,但cpu使用率会越多)
gzip_comp_level 3;
# 定义压缩文件的类型
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-h
ttpd-php image/jpeg image/gif image/png application/json;
3 在 Nginx 中解决跨域问题
比方说不同域的网站使用 ajax 发起 GET
请求获取由 Nginx 代理服务的静态资源,此时就会发生跨域问题。
此时需要进行以下配置,以下配置设置在 server
指令中:
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
3.1 DNS 解析域名
在计算机的整个网络里面,网络通信都是基于 tcp/ip
协议的,它是不会识别域名的,那么我们是怎么通过域名打开网站呢,这是因为浏览器访问域名时,它会经过 DNS(Domain Name System) 解析域名获取一个 ip,从而就会访问到解析后的 ip,获取对应的资源。
在本地电脑中可以修改 host
文件,添加新的域名绑定关系,模拟本地域名解析访问,因为 host
文件解析优先级会比 DNS 高,也可以下载 SwitchHosts 软件进行修改,如:
192.168.44 www.foodie.com
4 配置静态资源防盗链
比方说不希望不同域的网站获取静态资源,如使用 <img>
标签获取图片,也可以使用 Nginx 进行配置,放置到 server
指令块中,需要在 location
前声明:
#对源站点验证
valid_referers *.foodie.com;
#非法引入会进入下方判断
if ($invalid_referer)
{
return 404;
}