• Web架构之Nginx try_files


    try_files

    Nginx的try_files按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数,只有最后一个参数可以引起一个内部重定向。之前的参数只设置内部的URI指向,最后一个参数是回退的URI且必须存在,否则将会出现内部500错误

    try_files格式:

    location / {
            try_files $uri $uri/ /index.php;
        }
    
    #1.检查用户请求的uri内容是否存在当前本地磁盘,存在则解析
    #2.将请求加/,类似于重定向处理
    #3.前两者匹配不到,最后交给index.php处理
    

    简单实现

    1.环境准备

    $ echo "Try-Page" > /data/www/index.html
    

    2.配置nginx的try_file

    $ cat /etc/nginx/conf.d/try_files.conf
    server {
        listen 80;
        server_name www.hhjy.org;
        root /data/www/;
        index index.html;
        location / {
            try_files $uri $uri/ /index.html;
        }
    }
    

    3.测试

    $ curl www.hhjy.com/cache/xx1.html
    Try-Page // 返回的是index.html的内容
    
    // 访问流程
    curl www.hhjy.com/cache/xx1.html
    
    首先nginx会在该虚拟主机root关键字所定义的路径/data/www下查找cache/xxindex.ht,
    如果该文件不存在,则会返回/data/www/index.html
    

    示例

    示例一:跳转到指定后端

    server {
      listen 80; 
      server_name 10.4.7.7; 
      root /data/code; 
      index index.html; 
    
      location / {
        try_files /a.html /b.html @java_page;  # 检查文件a.html、b.html,如果存在则正常显示,不存在就去查找@java_page的值。
      } 
      location @java_page {
        proxy_pass http://172.16.1.7:8080;  # 转发到 172.16.1.7:8080
      }
      }
    

    实例二:跳转到指定文件

    server {
      listen 80;
      server_name 10.4.7.7;
      root /data/code;
      index index.html;
     
      location /abc {
        try_files /a.html /b.html /c.html;
     }
    
  • 相关阅读:
    MiniUI破解方法
    mysql [索引优化] -- in or替换为union all
    MySQL匹配指定字符串的查询
    MySQL优化之like关键字
    Java身份证归属地目录树
    JS数字指定长度不足前补零的实现
    jQuery Distpicker插件 省市区三级联动 动态赋值修改地址
    JS 正则表达式从地址中提取省市县
    Eclipse/myEclipse 代码提示/自动提示/自动完成设置
    Spring Mvc配置多视图
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12490125.html
Copyright © 2020-2023  润新知