• 马哥学习笔记二十八——nginx反向代理,负载均衡,缓存,URL重写及读写分离


    Nginx反向代理

      Nginx通过proxy模块实现反向代理功能。在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI、客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server)。nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上。如下面的示例中,location的/uri将被替换为上游服务器上的/newuri。

      location /uri {   

        proxy_pass http://www.magedu.com:8080/newuri;  

      }  

      不过,这种处理机制中有两个例外。一个是如果location的URI是通过模式匹配定义的,其URI将直接被传递至上游服务器,而不能为其指定转换的另一个URI。例如下面示例中的/forum将被代理为http://www.magedu.com/forum。

      location ~ ^/bbs {   

        proxy_pass http://www.magedu.com;  

      }

      第二个例外是,如果在loation中使用的URL重定向,那么nginx将使用重定向后的URI处理请求,而不再考虑上游服务器上定义的URI。如下面所示的例子中,传送给上游服务器的URI为/index.php?page=<match>,而不是/index。

      location / {   

        rewrite /(.*)$ /index.php?page=$1 break;   

        proxy_pass http://localhost:8080/index;  

      }

    proxy模块的指令

    proxy模块的可用配置指令非常多,它们分别用于定义proxy模块工作时的诸多属性,如连接超时时长、代理时使用http协议版本等。下面对常用的指令做一个简单说明。

      proxy_connect_timeout:nginx将一个请求发送至upstream server之前等待的最大时长;

      proxy_cookie_domain:将upstream server通过Set-Cookie首部设定的domain属性修改为指定的值,其值可以为一个字符串、正则表达式的模式或一个引用的变量;

      proxy_cookie_path: 将upstream server通过Set-Cookie首部设定的path属性修改为指定的值,其值可以为一个字符串、正则表达式的模式或一个引用的变量;

      proxy_hide_header:设定发送给客户端的报文中需要隐藏的首部;

      proxy_pass:指定将请求代理至upstream server的URL路径;

      proxy_set_header:将发送至upsream server的报文的某首部进行重写;

      proxy_redirect:重写location并刷新从upstream server收到的报文的首部;

      proxy_send_timeout:在连接断开之前两次发送至upstream server的写操作的最大间隔时长;

      proxy_read_timeout:在连接断开之前两次从接收upstream server接收读操作的最大间隔时长;

    upstream模块的负载均衡算法主要有三种:

      轮调(round-robin)

      ip哈希(ip_hash)

      最少连接(least_conn)

  • 相关阅读:
    适用于IE的自适应大小并且自动居中的对话框页面(javaScript)
    ASP.net后台动态加载JS文件
    分层就是分工与协作
    用Response.Filter生成静态页[要注意并发问题]
    新旧身份证合法性验证及验证算法
    子窗口刷新父窗口的问题
    获取字符串的真实长度
    子窗口刷新父窗口然后关闭
    datalist的数据绑定事件收藏
    通过Response.Filter属性实现网站内容的动态GZIP压缩
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/3818992.html
Copyright © 2020-2023  润新知