[TCP/IP][distributed] proxy protocol 是什么


 

問題描述:

在Web分布式系統中,一般會搭建復雜的load blance系統來提供高性能的web服務。

load blance有4層網絡的,也有7層網絡的。再經過這樣的分布式網絡之后,后面真正提供服務的

程序可能會喪失掉client的網絡信息,也就是IP地址以及TCP端口。

 

解決方法:

為了解決這樣的問題,存在着這樣一種協議。叫做 Proxy Protocol。

 

正文

1.  協議實現

在三次握手之后,會增加一個TCP payload包,包payload長度48字節。如圖:

 

示例,如下圖所示的第四個包就是proxy protocol的包。

 

payload格式,根據V1,V2兩個版本有所不同。如下是V1版本,是ASCII碼格式:

PROXY TCP4 202.112.144.236 10.210.12.10 5678 80\r\n
PROXY TCP6 2001:da8:205::100 2400:89c0:2110:1::21 6324 80\r\n
PROXY UKNOWN\r\n

 V2的略。(可參考文后的鏈接)

 

2. nginx proxy的配置方法

stream {

    server {
        listen              12345;

        proxy_pass          backend.example.com:8080;
        proxy_protocol      on;
    }

}

 

3. nginx server的配置方法

http {
    log_format elb_log '$proxy_protocol_addr';

    server {

        listen 8080 proxy_protocol;
        root /usr/local/nginx/html;
        index index.html index.htm;

        server_name hello-world.com;
        set_real_ip_from 192.168.10.0/24;
        real_ip_header  proxy_protocol;
    }

    location / {
        try_files $uri $uri/ /index.html;

        proxy_pass http://backend.example2.com:8088;
        proxy_set_header X-Forwarded-For $proxy_protocol_addr;
    }

    access_log /usr/local/nginx/stream.log elb_log;
}

 

參考資料:

https://www.jianshu.com/p/cc8d592582c9

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM