• nginx里proxy_pass有无/的区别


    nginx在反向代理的时候,proxy_pass需要指定路径,有无"/"的区别,如下:
     
     location /lile {
         配置一: proxy_pass  http://192.168.0.37/;
         配置二: proxy_pass  http://192.168.0.37;
        } 

    环境说明:

    反向代理服务器:192.168.0.224
    真实数据机器:192.168.0.37

     
    1:先配置真实数据机的nginx配置文件
     
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include      mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
            listen      80;
            server_name  localhost;
            
            root     /web1
    
            location /lile {
                root  /data;
                index index.html;
            }       
            }
    }

     

    创建对应的文件夹:
     
    mkdir /web1
    echo "My location is /web1" > index.html
    mkdir -p /data/lile
    echo "My location is /data/lile" > index.html
    2:反向代理的配置文件为
     
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    
    http {
        include      mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  logs/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
            listen      80;
            server_name  localhost;
            location /lile {
                  配置一:proxy_pass  http://192.168.0.37;
                  配置二:proxy_pass  http://192.168.0.37/
            }
    }
    }
     
     
    3:测试
     
    当proxy_pass为:http://192.168.0.37  的时候,返回的数据如下:
    1)浏览器请求访问http://192.168.0.224/lile/ 
    2)到达192.168.0.224后,location /lile 匹配到之后,转发的地址为:http://192.168.0.37/lile/
    3)然后到达192.168.0.37,匹配到了location /lile,所以就去/data目录下取数据
     
     
     
    当proxy_pass为: http://192.168.0.37/  的时候,返回的数据如下:
    1)浏览器请求访问http://192.168.0.224/lile/ 
    2)达192.168.0.224后,location /lile 匹配到之后,转发的地址为:http://192.168.0.37/,这里在proxy_pass的 http://192.168.0.37/ “/”会把/lile给替换掉
    3)然后到达192.168.0.37,直接匹配到的是root /web1,所以就去/web1目录下取数据
     
     
    4:其他
     
    在上面的location若为/,没有其他的具体匹配值,那么这两个的访问无区别     
    location / {
        配置一: proxy_pass  http://192.168.0.37/;
        配置二: proxy_pass  http://192.168.0.37;
    }
      
     
    配置一转发的时候,新的URI替换原有的得到的还是 http://192.168.0.37/
    配置二转发的时候,不会发生改变 http://192.168.0.37/
     
     
    5:总结
     
    proxy_pass URL(http://192.168.0.224/uri/)
    当URL中含有URI时,Nginx服务器会使用新的URI替换原有的URI(这里的新的URI理解为proxy_pass URL里的URI)
    当URL中不含URI时,Nginx服务器不会改变原有地址的URI
    这里的URI与URL暂且不去讨论它是怎么定义的,就理解为域名或者IP地址之后的路径(暂时还没弄清楚他们两个的区别)
     
     
    注:学习《nginx高性能Web服务器详解》的时候总结
  • 相关阅读:
    day02_接口测试流程
    day01_接口测试常识丶HTTP协议
    day03_元素操作丶浏览器操作方法丶鼠标操作
    day05_数组
    day04_运算符
    day03_数据类型丶字符编码丶基本数据类型转换
    day02_注释丶关键字丶标识符丶常量丶变量
    day04_数据序列之字符串
    day03_流程控制语句
    day02_输入数据丶数据类型转换丶运算符
  • 原文地址:https://www.cnblogs.com/lemon-le/p/7800879.html
Copyright © 2020-2023  润新知