第4章 静态网站部署
Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端
4.1 案例:将ace-master这个静态网站部署到Nginx服务器上
4.1.1 通过Xftp将ace-master到linux服务器/opt/static目录下,为了演示方便,将名字改为ace
4.1.2 通过http://192.168.235.128:80/访问
(1) 修改nginx.conf配置文件
在server中,通过location匹配访问的路径,然后转发给静态资源
注意要以分号结尾
(2) 重启nginx服务器
(3) 在浏览器中输入http://192.168.235.128:80/进行访问
4.1.3 通过http://192.168.235.128:80/ace/访问
(1) 修改nginx.conf配置文件
在server中,通过location匹配访问的路径,然后转发给静态资源
index:可选
(1) 重启nginx服务器
(2) 在浏览器中输入http://192.168.235.128:80/ace进行访问
4.2 location中配置路径讲解
初次接触:可能会遇到404找不到页面的错误,主要原因是配置路径问题;
规则:ip + port 等于 root,假设server的配置如下:
server {
listen 80; #端口号
location / {
root /opt/static /ace; #静态文件路径
}
}
替换:
http://192.168.92.128:80/ = root = /opt/static/ace
http://192.168.92.128:80/ace = root/ace = /opt/static/ace/ace
location匹配顺序在没有标识符的请求下,匹配规则如下:1、nginx服务器首先在server块的多个location块中搜索是否有标准的uri和请求字符串匹配。如果有多个标准uri可以匹配,就匹配其中匹配度最高的一个location。2、然后,nginx在使用location块中,正则uri和请求字符串,进行匹配。如果正则匹配成功,则结束匹配,并使用这个location处理请求;如果正则匹配失败,则使用标准uri中,匹配度最高的location。备注:1、如果有精确匹配,会先进行精确匹配,匹配成功,立刻返回结果。2、普通匹配与顺序无关,因为按照匹配的长短来取匹配结果。3、正则匹配与顺序有关,因为是从上往下匹配。(首先匹配,就结束解析过程)4、在location中,有一种统配的location,所有的请求,都可以匹配,如下:location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配} 结合标识符,匹配顺序如下:(location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (location /)即(精确匹配)> (最长字符串匹配,但完全匹配) >(非正则匹配)>(正则匹配)>(最长字符串匹配,不完全匹配)>(location通配)
4.3 遇到的坑
4.3.1在windows下用凡斜杠遇到的坑
4.4 location中配置root 和alias的区别
在这个location配置段中,如果URL请求“http://localhost/image/2.png”,那么将会匹配到/image这个location中,会在D:/home/server/imageserver/下寻找2.png这个资源,而不会拼接上/image这个目录,即不是在D:/home/server/imageserver/image/下寻找2.png这个资源。而如果是root的话,则是在D:/home/server/imageserver/image/下寻找2.png这个资源。
总结:
alias中,location 后面的/image不会拼接到路径后面
root中,location 后面的/image会拼接到路径后面