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,返回资源。

相关推荐
Evan芙3 小时前
nginx日志管理及日志格式定制
运维·nginx
HunterMichaelG4 小时前
【openSSH】Linux openEuler-20.03-x86-64服务器升级openSSH至10.2p1版本
tcp/ip·nginx
core5126 小时前
Nginx 实战:如何通过代理转发下载中文文件并保留原文件名
运维·nginx·代理·下载·转发
Energet!c8 小时前
Nginx access 日志通过 Filebeat 8.15.5 写入 Elasticsearch 8 实战指南
nginx·elasticsearch·filebeat·openresty
福大大架构师每日一题9 小时前
nginx 1.29.4 发布:支持 HTTP/2 后端与加密客户端问候(ECH),多项功能优化与修复
运维·nginx·http
爱宇阳10 小时前
宝塔面板 + Nginx + Spring Boot 零停机滚动发布完整教程
运维·spring boot·nginx
全栈工程师修炼指南10 小时前
Nginx | HTTP 反向代理:对上游服务端返回响应处理实践
运维·网络·nginx·安全·http
serve the people11 小时前
AI 模型识别 Nginx 流量中爬虫机器人的防御机制
人工智能·爬虫·nginx
Evan芙11 小时前
基于Nginx和Python的动态站点安装配置
数据库·python·nginx