zoukankan      html  css  js  c++  java
  • 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;
     }
    
  • 相关阅读:
    《链队列---队列的链式表示和实现》
    《栈的应用_版本1.2(实现了可以在一次运行后进行多次操作)》
    《栈的应用_版本1.1(实现了如何十进制转十六进制)》
    《栈的应用 版本1.0》
    《栈的基本操作》
    《单链表练习》
    hdu5887 Herbs Gathering
    CF198 div1 D
    hdu5893 List wants to travel
    hdu5556 Land of Farms
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12490125.html
Copyright © 2011-2022 走看看