为了方便本地调试,有时候需要搭建起测试服务器来方便局域网内客户端服务器的真机调试,这个时候就需要用到静态资源服务器了
应用场景:
android/ios webapp真机加载网页访问局域网内spring boot后端服务器联调
网页服务
http {
...
...
server {
listen : 90;
server_name : 192.168.3.11;
location : / {
root path/finder; #path绝对路径或者相对路径
index index.html;
}
}
}
通过上面的配置,就在90端口配好了一个网页服务。
以angular js举例,将你ng build --prod得到的dist的所有内容拷贝到 $path/finder/目录内,build出来的文件中默认启动页就叫index.html。
此时,nginx -s reload后,在本地的浏览器中输http://192.168.3.11:90就可以访问到刚刚你打包好放到finder下的网页项目了。
静态资源服务
和网页服务器类似,单独起一个端口给静态资源服务用
http {
...
...
server {
listen : 91;
server_name : 192.168.3.11;
location : / {
root path/static; #path绝对路径或者相对路径
#index index.html; 这里注释掉了,静态资源没有启动页的
}
}
}
例如
我在$path/static/img中放入了1.png、2.png两张图片。
此时nginx -s reload后在浏览器中访问http://192.168.3.11:91/img/1.png你就在浏览器中看到这张图片展示出来,说明你的静态资源服务可以使用了。
还有一种方式就是共用端口
共用端口配置方式
http {
...
...
server {
listen : 90;
server_name : 192.168.3.11;
location : / {
root path/finder; #path绝对路径或者相对路径
index index.html;
}
#这里可以配置多个localtion
location : / {
root path/static; #path绝对路径或者相对路径
#index index.html; 这里注释掉了,静态资源没有启动页的
}
}
}
ok,看起来没问题了,nginx -s reload后你发现报错了,原因在哪呢,注意上面两个localtion后面的/,同一个端口两个路由使用同一个位置,nginx将不知道访问哪个路径,修改如下
http {
...
...
server {
listen : 90;
server_name : 192.168.3.11;
location : / {
root path/finder; #path绝对路径或者相对路径
index index.html;
}
#这里可以配置多个localtion
location : /static { #将static放到这里来,nginx将会和root拼接,得到path/static,注意是会被拼接到root的后面
root path; #path绝对路径或者相对路径
#index index.html; 这里注释掉了,静态资源没有启动页的
}
}
}
localtion指定路由的目录,这个目录将会拼接在root的后面,此时nginx -s reload后在浏览器中输入http://192.168.3.11:90/static/img/1.png你就再次看到图片。
注意这次url加上一个目录static,这个static其实是个路由,可以是真实的目录用于拼接,也可以是一个别名,使用别名可以隐藏我们静态资源目录真实位置
使用别名路由
http {
...
...
server {
listen : 90;
server_name : 192.168.3.11;
location : / {
root path/finder; #path绝对路径或者相对路径
index index.html;
}
#这里可以配置多个localtion
location : /grace { #使用别名
#root path; #path绝对路径或者相对路径,***这里注释掉root
#index index.html; 这里注释掉了,静态资源没有启动页的
alias path/static; #用别名替代真实路径
}
}
}
配置好以后,nginx -s reload后浏览器输入http://192.168.3.11:90/grace/img/1.png你将再次看到图片展示出来。
别名grace路由到path/static了,同理,上面的localtion /static这种方式其实也可以理解为static路由到了path/static这个位置了。