Nginx静态资源概述
Nginx处理静态资源的内容,我们需要考虑下面这几个问题:
(1)静态资源的配置指令 (2)静态资源的配置优化 (3)静态资源的压缩配置指令 (4)静态资源的缓存处理 (5)静态资源的访问控制,包括跨域问题和防盗链问题
Nginx静态资源的配置指令
listen指令
listen:用来配置监听端口。
语法 | listen address[:port] [default_server]…; listen port [default_server]…; |
默认值 | listen *:80 | *:8000 |
位置 | server |
default_server属性是标识符,用来将此虚拟主机设置成默认主机。所谓的默认主机指的是如果没有匹配到对应的address:port,则会默认执行的。如果不指定默认使用的是第一个server。
server{ listen 8080; server_name 127.0.0.1; location /{ root html; index index.html; } } server{ listen 8080 default_server; server_name localhost; default_type text/plain; return 444 'This is a error request'; }
server_name指令
server_name:用来设置虚拟主机服务名称。
127.0.0.1 、 localhost 、域名[www.baidu.com | www.jd.com]
语法 | server_name name …; name可以提供多个中间用空格分隔 |
默认值 | server_name “”; |
位置 | server |
关于server_name的配置方式有三种,分别是:
精确匹配 通配符匹配 正则表达式匹配
配置方式一:精确匹配
如:
server { listen 80; server_name www.onenewcode.cn; ... }
补充小知识点:
hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
因为域名是要收取一定的费用,所以我们可以使用修改hosts文件来制作一些虚拟域名来使用。需要修改 /etc/hosts
文件来添加
vim /etc/hosts 127.0.0.1 www.onenewcode.cn
配置方式二:使用通配符配置
server_name中支持通配符"*",但需要注意的是通配符不能出现在域名的中间,只能出现在首段或尾段,如:
server { listen 80; server_name *.onenewcode.cn; # www.onenewcode.cn abc.onenewcode.cn ... }
**配置三:**使用正则表达式配置
server{ listen 80; server_name ~^www\.(\w+)\.com$; default_type text/plain; return 200 $1 $2 ..; }
匹配执行顺序
No1:准确匹配server_name No2:通配符在开始时匹配server_name成功 No3:通配符在结束时匹配server_name成功 No4:正则表达式匹配server_name成功 No5:被默认的default_server处理,如果没有指定默认找第一个server
location指令
server{ listen 80; server_name localhost; location / { } location /abc{ } ... }
location:用来设置请求的URI
语法 | location [ = | ~ | ~* | ^~ |@ ] uri{…} |
默认值 | — |
位置 | server,location |
uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式,那么nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配,如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求。
属性介绍:
不带符号,要求必须以指定模式开始
server { listen 80; server_name 127.0.0.1; location /abc{ default_type text/plain; return 200 "access success"; } } 以下访问都是正确的 http://192.168.200.133/abc http://192.168.200.133/abc?p1=TOM http://192.168.200.133/abc/ http://192.168.200.133/abcdef
Nginx静态资源部署之响应内容部署(二)https://developer.aliyun.com/article/1392036