• Nginx配置proxy_pass转发/路径问题


    proxy_ignore_client_abort on; #不允许代理端主动关闭连接 

    upstream的负载均衡,四种调度算法

    #调度算法1:轮询.每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响 upstream webhost { server
    192.168.0.5:6666 ; server 192.168.0.7:6666 ; } #调度算法2:weight(权重).可以根据机器配置定义权重.权重越高被分配到的几率越大 upstream webhost { server 192.168.0.5:6666 weight=2; server 192.168.0.7:6666 weight=3; } #调度算法3:ip_hash. 每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题 upstream webhost { ip_hash; server 192.168.0.5:6666 ; server 192.168.0.7:6666 ; } #调度算法4:url_hash(需安装第三方插件).此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率.Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包 upstream webhost { server 192.168.0.5:6666 ; server 192.168.0.7:6666 ; hash $request_uri; } #调度算法5:fair(需安装第三方插件).这是比上面两个更加智能的负载均衡算法.此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配.Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块

    在nginx中配置proxy_pass时,如果是按照 ^~ 正则匹配路径时,要注意proxy_pass后的url最后的 /

    如果加上了/,则会把匹配的路径部分也给代理走;

    如果没有/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走。

    (注意:这里说的是proxy_pass的url后面的"/",不是指location 后面的"/")

    假如已有站点:http://js.test.com/test.html

    location  /static_js/   { 
        proxy_pass http://js.test.com/; (这里的最后面的"/")
    }

    如上面的配置,如果请求的url是http://servername/static_js/test.html,会被代理成http://js.test.com/test.html

    而如果这么配置

    location  /static_js/  { 
        proxy_pass http://js.test.com; 
    }

    则会被代理到http://js.test.com/static_js/test.htm,产生无法访问从而报错

    如果换成下面这样,也会报错:
    location ^~ /static_js/ {
        proxy_pass http://js.test.com; 
    }

    但是,这样就没问题了:
    location ^~ /static_js/ {
        proxy_pass http://js.test.com/
    }

    当然,我们可以用如下的rewrite来实现/的功能

    location ^~ /static_js/ { 
        rewrite /static_js/(.+)$ /$1 break; 
        proxy_pass http://js.test.com; 


    下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。

    第一种:

    location  /proxy/ {

              proxy_pass http://127.0.0.1:81/;

    }

    会被代理到http://127.0.0.1:81/test.html 这个url

    第二咱(相对于第一种,最后少一个 /)

    location  /proxy/ {

              proxy_pass http://127.0.0.1:81;

    }

    会被代理到http://127.0.0.1:81/proxy/test.html 这个url

    第三种:

    location  /proxy/ {

              proxy_pass http://127.0.0.1:81/ftlynx/;

    }

    会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。

    第四种情况(相对于第三种,最后少一个 / ):

    location  /proxy/ {

              proxy_pass http://127.0.0.1:81/ftlynx;

    }

    会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url

  • 相关阅读:
    Educational Codeforces Round 83 --- F. AND Segments
    Educational Codeforces Round 83 --- G. Autocompletion
    SEERC 2019 A.Max or Min
    2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
    Educational Codeforces Round 78 --- F. Cards
    今天我学习了一门全新的语言
    codeforces 1323D 题解(数学)
    Educational Codeforces Round 80 (Div. 2) 题解 1288A 1288B 1288C 1288D 1288E
    Educational Codeforces Round 81 (Div. 2) 题解 1295A 1295B 1295C 1295D 1295E 1295F
    Codeforces Round #617 (Div. 3) 题解 1296C 1296D 1296E 1296F
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/11949943.html
Copyright © 2020-2023  润新知