• nginx入门二


    反向代理:

    proxy_pass

        server {
            listen       80;
    	location /n {
    		proxy_pass http://127.0.0.1:8000/test;
    
    	}
    	location /m {
    		proxy_pass http://127.0.0.1:8000/test/;
    
    	}
        }
    

     http://127.0.0.1:8000 是python 提供的http服务。


    访问:http://127.0.0.1/n

    结果重定向到:http://127.0.0.1/test/

    404 Not Found


    访问:http://127.0.0.1/n/

    结果正常

    Directory listing for /test/


    访问:http://127.0.0.1/nhaha  ,  http://127.0.0.1/nhaha/

    Error response

    Error code 404.


    访问:http://127.0.0.1/m

    结果正常

    Directory listing for /test/


    访问:http://127.0.0.1/m/

    结果正常

    Directory listing for /test//


    访问:http://127.0.0.1/mhaha

    结果重定向到:http://127.0.0.1/test/haha/

    404 Not Found


    访问:http://127.0.0.1/mhaha/

    结果正常

    Directory listing for /test/haha/


    只要是重定向的,请求都没有经过proxy_pass,nginx直接返回了。

    但是如果在配置文件加入:

    	location / {
    		proxy_pass http://127.0.0.1:8000/;
    		
    	}
    

    访问:http://127.0.0.1/n

    重定向到:http://127.0.0.1/test/

    结果正常

    Directory listing for /test/

    由此可知nginx的匹配应该是有一个优先级的。

    	location /m2 {
    		proxy_pass http://127.0.0.1:8000/test/haha/;
    
    	}
    

     访问:http://127.0.0.1/m

    那么肯定选择/m匹配,结果:

    Directory listing for /test/


    访问:http://127.0.0.1/m2

    那么肯定选择/m2匹配,结果:

    Directory listing for /test/haha/


    访问:http://127.0.0.1/m3

    由于配置文件没有/m3,所以nginx会尝试/m

    /m=http://127.0.0.1:8000/test/

    /m3=http://127.0.0.1:8000/test/3

    所以重定向到:http://127.0.0.1/test/3/

    Directory listing for /test/3/


    分析总结:

    nginx的匹配是:先窄范围后宽范围。这也解释了在添加 location /{...}之前重定向返回404,后来有正常。因为之前 / 指向的是nginx的html目录,配置后 /指向python监听的目录(/root/Downloads/)。

    是否重定向由:匹配后的url后面是否有"/"决定。/m3=http://127.0.0.1:8000/test/3(重定向),/m3/=http://127.0.0.1:8000/test/3/(不重定向)

    我们也发现这样的匹配会由超出预期的结果,比如/m3,/mhaha

    所以在写匹配规则的时候还是:

    	location /uri/ {
    		proxy_pass http://127.0.0.1:8000/uri 或 proxy_pass http://127.0.0.1:8000/uri/
           }    
    
  • 相关阅读:
    Centos搭建SVN服务器
    JavaScript 对象 之创建对象 学习笔记
    ThinkPHP 学习记录
    Git 版本控制 在 WIN 下的一些使用方法
    关于 CSS 的重用性
    双飞翼布局和圣杯布局
    cocos2dx3.8 ios打包脚本编写
    如何做dragonbones的lua绑定(xcode)
    【转】如何做dragonbones的lua绑定(Android)
    【转】如何做dragonbones的lua绑定(VisualStudio)
  • 原文地址:https://www.cnblogs.com/lanqie/p/7921952.html
Copyright © 2020-2023  润新知