1. 程式人生 > >nginx配置7層協議及4層協議方法

nginx配置7層協議及4層協議方法

既然講到了配置7層和4層協議,這裡我們就多說點,舉例講解下什麼是7層協議,什麼是4層協議。

(1)7層協議

OSI(Open System Interconnection)是一個開放性的通行系統互連參考模型,他是一個定義的非常好的協議規範,共包含七層協議。直接上圖,這樣更直觀些:

在這裡插入圖片描述

好,詳情不進行仔細講解,可以自行百度!

(2)4層協議

TCP/IP協議
之所以說TCP/IP是一個協議族,是因為TCP/IP協議包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等許多協議,這些協議一起稱為TCP/IP協議。

從協議分層模型方面來講,TCP/IP由四個層次組成:網路介面層、網路層、傳輸層、應用層。

在這裡插入圖片描述

(3)協議配置

這裡我們舉例,在nginx做負載均衡,負載多個服務,部分服務是需要7層的,部分服務是需要4層的,也就是說7層和4層配置在同一個配置檔案中。

vi nging.conf

worker_processes  8;

events {
        worker_connections  1024;
}
#7層http負載
http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        gzip  on;

        #app
        upstream  app.com {
                ip_hash;
                server 192.168.1.1:8080;
                server 192.168.1.2:8080;
                server 192.168.1.3:8080;
                server 192.168.1.4:8080;
        }

        server {
                listen       81;
                server_name  app;
                charset utf-8;
                location / {
                        proxy_pass http://plugin.com;
                        proxy_set_header Host $host:$server_port;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                        root   html;
                }
        }

        #file9090
        upstream  file.com {
                ip_hash;
        server 192.168.1.5:9090;
        server 192.168.1.6:9090;
        }
        server {
                listen       84;
                server_name  file;
                charset utf-8;
                location / {
                        proxy_pass http://file9090.com;
                        proxy_set_header Host $host:$server_port;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                        root   html;
                }
        }
}


#4層tcp負載
stream {
			upstream app5071 {
                hash $remote_addr consistent;
                server 192.168.1.7:5071;
                server 192.168.1.8:5071;
        }
        server {
            listen 87;
            proxy_connect_timeout 10s;
            proxy_timeout 30s;
            proxy_pass app5071;
        }
}