问题起源
在配置静态资源服务器的时候发现了一个问题,比如我想访问 www.xxx.com/hello.png 图片,配置如下
server {
listen 9090;
server_name 192.168.2.165;
charset utf - 8;
location / {
root / assets / img / ;
autoindex on;
}
}
这样访问 192.168.2.168/hello.png
就可以访问到目录 /assets/img/
下的图片
但是如果访问的js或者css,要把路径分开来容易识别,所以实际应该通过路径 192.168.2.168/img/hello.png
访问所需的图片
root和alias指令
root和alias指令提供了nginx访问路径的方式,root指令会把root的值和当前访问的路径连接起来,举个栗子,如果想通过 192.168.2.165/static/ 来访问static目录下的资源
location /static/ {
root /var/www/app/static/ ;
autoindex off;
}
当访问路径 /static/ 的时候,nginx得到的路径为 /var/www/app/static/static/
所以需要这样配置
location /static/ {
root /var/www/app/;
autoindex off;
}
而aliax则不会把当前访问的路径给拼接起来,实现上面的功能代码如下
location /static/ {
alias /var/www/app/static/ ;
autoindex off;
}
前端项目部署
前后端分离的项目,在使用history模式的路由时,会经常出现的问题是刷新页面导致404,这时候可以通过 try_files
指令来解决,当查不到文件的时候,返回 index.html
即可
location / {
root html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}