nginx路径相关配置汇总

一、root和alias的区别

root是将root配置的路径和location配置的路径拼接;alias则是用alias的路径替换location配置的路径

bash 复制代码
# 返回localhost:port/html/test/index.html的文件 
location ^~ /test/ { 
    root html/;
    index index.html index.htm;
} 
# 返回localhost:port/html/test/index.html的文件 
location ^~ /test/ { 
    alias html/test/; 
    index index.html index.htm;
}

二、 location路径末尾有无/的区别

1.location末尾没有/,则以结尾路径进行模糊匹配,配置location /test/a,则可以匹配/test/a,/test/a/,/test/a/b,/test/abc
  • /test/a
  • /test/a/
  • /test/a/b
  • /test/abc(是的,也会匹配!)
bash 复制代码
lication /test/a {
    alias html/test/;
    index index.html index.htm;
}
2.location末尾有/,则以结尾路径进行精确匹配,配置location /test/a/,则可以匹配/test/a/,/test/a/b,不能匹配/test/a,/test/abc
  • /test/a/
  • /test/a/b
  • /test/a(严格来说不匹配,但有时会301重定向到有/的版本)
  • /test/abc
bash 复制代码
lication /test/a/ {
    alias html/test/;
    index index.html index.htm;
}

使用 proxy_pass 配置反向代理,在匹配到 location 配置的 URL 路径后,转发请求到 proxy_pass 配置额 URL,方向代理后的地址与 proxy_pass 路径末尾是否有"/"有关;

三、proxy_pass 路径末尾有无/的区别

1.proxy_pass 路径末尾配置/表示绝对路径,当请求匹配到/api/时,会直接将替换为 proxy_pass 的路径
javascript 复制代码
location   /api/  {
      proxy_pass    http://127.0.0.1:8080/;
}

请求 http://xxx/api/get,将会被 nginx 转发请求到http://127.0.0.1:8080/get(未附加/api/路径)。

2.proxy_pass 路径末尾没有/表示相对路径,当请求匹配到/api/时,会拼接 proxy_pass 的路径
javascript 复制代码
location   /api/  {
      proxy_pass    http://127.0.0.1:8080;
}

请求 http://xxx/api/get,将会被 nginx 转发请求到http://127.0.0.1:8080/api/get(拼接/api/路径)。

四、try_files 当配置资源请求失败时,尝试访问try_files路径下的资源

由于vue项目是SPA,只有一个html页面,当使用项目history模式,在访问子路由时,刷新页面会nginx报错404,则需要配置try_files,使得nginx在访问资源失败时,尝试访问try_files配置的资源路径;

bash 复制代码
lication /test/ {
    alias html/test/;
    index index.html index.htm;
    try_files $uri $uri/ /test/index.html;
}

项目访问localhost:port/test/根路径则可以正常访问,当访问子路由localhost:port/test/home刷新页面之后则请求不到资源,则依次读取try_files下的资源,$uri指代我们访问的路径/test/home,访问失败,则最终访问我们配置的/test/index.html,返回资源。

相关推荐
无名的小白1 小时前
openclaw使用nginx反代部署过程 与disconnected (1008): pairing required解决
java·前端·nginx
wengad1 小时前
podman搭建nginx服务
运维·nginx·podman
regret~4 小时前
【笔记】Nginx 核心操作 + 配置解析笔记(适配 Linux+FastAPI / 前端代理场景)
linux·笔记·nginx
萧曵 丶6 小时前
Nginx常用配置
运维·nginx
有代理ip6 小时前
后端服务安全加固:Nginx 反向代理配置教程
运维·nginx·安全
养多肉6 小时前
宝塔面板绑定域名(不带端口)
服务器·nginx·安全
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 天前
Nginx构建PC站点:root与alias详解
运维·chrome·nginx
哆啦code梦1 天前
Kong vs Nginx:微服务网关选型指南
nginx·kong·微服务网关
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 天前
Nginx性能调优与压测实战指南
运维·nginx
岁岁种桃花儿1 天前
流量入口Nginx动态发现K8s Ingress Controller实操指南
nginx·架构·kubernetes