既然讲到了配置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;
}
}