关于 alias和root配置的说明:
一般情况下,在nginx配置中的良好习惯是:
1)在location /中,即路径为“ / ”时, 配置root目录;
2)在location /path中,即路径包含指定内容,如“ localtion /imgs ”时, 配置alias虚拟目录。
# 访问静态资源:直接配置静态资源_绝对路径,Docker的话,需要配置Docker内部Nginx的绝对路径 # 配置文件中增加如下内容location(配置文件位置:nginx/nginx.conf, # 新版本配置文件位置:/nginx/conf.d/default.conf) location /images { autoindex on; autoindex_exact_size on; autoindex_localtime on; # Window服务器,路径如 D:/images/; # ***注***: 1. 路径分隔符为 / 或 \\ ,而非 \ # 2. 使用alias,最后的" / " 不能缺少 alias /home/nginx-1.22.0/images/; # 绝对路径 [ docker需要配置容器内绝对路径 ] }
nginx默认是不允许列出整个目录的,如需开启,使用下方三个配置项: autoindex on; 开启目录列表访问,这样浏览器可以直接访问根路径,列出文件列表,和Ftp效果类似 autoindex_exact_size on; 显示出文件的确切大小,单位是bytes。 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB autoindex_localtime on; 默认为off,显示的文件时间为GMT时间。 改为on后,显示的文件时间为文件的服务器时间
1. 在/home/nginx-1.22.0文件夹下创建images文件夹[可随意路径],放入图片: MyIndex.jpg 2. 修改nginx.conf配置文件【路径千万别找错了】 如 路径: /usr/local/nginx/conf/nginx.conf 或 D:/images/; 3. 新增一个图片资源路径访问location: location /images { autoindex on; autoindex_exact_size on; autoindex_localtime on; alias /home/nginx-1.22.0/images/; # 最后的" / " 不能缺少 # alias F:\\PHP\\upload; }
alias和root区别: 1)alias指定的目录是准确的,Nginx访问该location时,资源路径即alias指定的跟路径; 2)root指定的目录是location匹配访问的path目录的上一级目录 # 如 location /imgs/, root配置为 /code/front/dist # 那么,文件的路径存在在: /code/front/dist/imgs/ 3)使用alias标签的目录块中不能使用rewrite的break(具体原因不明); 另外,alias指定的目录后面必须要加上 “ / ” 符号!!! 4)root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。 所以,一般情况下,在nginx配置中的良好习惯是: 1)在location /中配置root目录; 2)在location /path中配置alias虚拟目录。
# 假设项目文件夹:code , 静态文件的位置:/code/front/dist/ # 如下使用root配置,会访问不到,报404之类的: location ^~ /static/ { # 这里使用root的话,相当于 文件的路径为 /data/zfy_home/code/front/dist/static/ # root配置无效 root /data/zfy_home/code/front/dist/; # 有效配置: alias /data/zfy_home/code/front/dist/; # 使用alias时, 最后的" / " 不能缺少 } Or location / { # 这里直接使用root配置全路径即可 # root配置有效 root /data/zfy_home/code/front/dist/; # location后跟" / "时,建议直接使用root了,alias多此一举了感觉 alias /data/zfy_home/code/front/dist/; # 使用alias时, 最后的" / " 不能缺少 }