HAProxy 高级应用(一)

发布时间:2020-06-08 03:01:12 作者:逐梦小涛
来源:网络 阅读:1049

HAProxy 高级应用

================================================================================

概述:

  本章将继续上章的内容介绍haprosy代理配置段的相关参数,具体如下:

================================================================================

 10.修改请求或响应报文首部相关:

option forwardfor [ except <network> ] [ header <name> ] [ if-none ]

作用:

范围:都可以使用

参数:

Examples :

# Public HTTP address also used by stunnel on the same machine
frontend www
    mode http
    option forwardfor except 127.0.0.1  # stunnel already adds the header
# Those servers want the IP Address in X-Client
backend www
    mode http
    option forwardfor header X-Client

添加或删除请求,响应报文的首部

reqadd <string> [{if | unless} <cond>]

rspadd <string> [{if | unless} <cond>]

reqdel  <search> [{if | unless} <cond>]

    reqidel <search> [{if | unless} <cond>]  (ignore case)忽略大小写

rspdel  <search> [{if | unless} <cond>]

     rspidel <search> [{if | unless} <cond>]  (ignore case)

注意:

演示1:HAProxy把请求报文发往后端主机之前在请求报文添加“X-Forwared-For”首部;

 1.首先编辑haproxy的配置文件,定义除了本机之外,所有的请求报文均添加X-Forwared-For,首部记录客户端信息发往后端主机,如下:

HAProxy 高级应用(一)


 2.编辑后端主机RS1的httpd服务的配置文件/etc/httpd/conf/httpd.conf,修改日志的格式,如下:

HAProxy 高级应用(一)

 3.在启动RS1后端主机,在浏览器中访问,在RS1中查看日志,可以看到记录的日志为用户远端地址,而非haproxy的代理地址;

[root@centos7 ~]# tail -5  /var/log/httpd/access_log
192.168.1.105 - - [21/Nov/2016:23:48:54 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
192.168.1.105 - - [21/Nov/2016:23:49:39 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
192.168.1.105 - - [21/Nov/2016:23:50:29 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
192.168.1.105 - - [21/Nov/2016:23:50:30 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
192.168.1.105 - - [21/Nov/2016:23:50:30 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"

------------------------------------------------------------------------------------------

演示2:

  1.添加响应客户端报文的首部为经由haproxy转发的首部信息,如下:

HAProxy 高级应用(一)


  重载haproxy服务,请求查看首部信息如下:

[root@centos7 ~]# curl -I http://192.168.1.111
HTTP/1.1 200 OK
Date: Mon, 21 Nov 2016 16:31:02 GMT
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
Last-Modified: Fri, 18 Nov 2016 16:09:35 GMT
ETag: "1a-54195883a68b2"
Accept-Ranges: bytes
Content-Length: 26
Content-Type: text/html; charset=UTF-8
X-Via: HAProxy/1.5

 2.删除响应首部信息Server,编辑配置文件如下:

HAProxy 高级应用(一)


 重载haproxy服务,请求查看首部信息,发现已经删除了Server的首部,如下:

[root@centos7 ~]# curl -I http://192.168.1.111
HTTP/1.1 200 OK
Date: Mon, 21 Nov 2016 16:33:59 GMT
Last-Modified: Fri, 18 Nov 2016 16:09:35 GMT
ETag: "1a-54195883a68b2"
Accept-Ranges: bytes
Content-Length: 26
Content-Type: text/html; charset=UTF-8
X-Via: HAProxy/1.5


 11.超时时长:

timeout client <timeout>:

timeout server <timeout>

timeout connect <timeout>

timeout http-keep-alive <timeout>

timeout client-fin <timeout>

timeout server-fin <timeout>

 12.ACL控制访问列表

语法格式:

<aclname>:

<value>的类型:

[flags]

[operator]

数值匹配:

字符串匹配:

条件的逻辑连接

<creterion>:

4层检测机制:

block { if | unless } <condition>

Example:

acl invalid_src  src          0.0.0.0/7 224.0.0.0/3
acl invalid_src  src_port     0:1023
acl local_dst    hdr(host) -i localhost
block if invalid_src || local_dst

演示:

  1.阻断来自非 10.1.250.25 的ip(浏览器地址)请求,编辑配置文件,如下:

HAProxy 高级应用(一)

 重载haproxy服务,在浏览器中访问可以发现,拒绝访问

HAProxy 高级应用(一)

 在本机使用curl命令可以正常访问,说明仅拒绝了来自10.1.250.25的ip的请求。

[root@centos7 haproxy]# curl http://10.1.252.153
<h2>Backend Server 1</h2>
[root@centos7 haproxy]# curl http://10.1.252.153
<h2>Backend Server 1</h2>
[root@centos7 haproxy]# curl http://10.1.252.153
<h2>Backend Server 2</h2>

-------------------------------------------------------------------------------------------

  2.仅允许本浏览器(10.1.250.25)可以访问8080端口,编辑配置文件如下:

HAProxy 高级应用(一)


 重载haproxy服务,在浏览器中访问可以发现,可以正常访问

HAProxy 高级应用(一)


 在本机使用curl命令访问8080端口,拒绝访问,如下:

[root@centos7 haproxy]# curl http://10.1.252.153:8080
<html><body><h2>403 Forbidden</h2>
Request forbidden by administrative rules.
</body></html>













推荐阅读:
  1. 使用Haproxy搭建群集
  2. Haproxy搭建web集群

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

haproxy rox

上一篇:Openv*n配置和单网卡转发

下一篇:CKEditor 去掉图片自动添加高宽度

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》