nginx配置7层协议及4层协议⽅法
⽂章⽬录
7层协议
OSI(Open System Interconnection)是⼀个开放性的通⾏系统互连参考模型,他是⼀个定义的⾮常好的协议规范,共包含七层协议。
直接上图,这样更直观些:
4层协议
TCP/IP协议:
之所以说TCP/IP是⼀个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议⼀起称为TCP/IP协议。
从协议分层模型⽅⾯来讲,TCP/IP由四个层次组成:⽹络接⼝层、⽹络层、传输层、应⽤层。
协议配置
这⾥我们举例,在nginx做负载均衡,负载多个服务,部分服务是需要7层的,部分服务是需要4层的,也就是说7层和4层配置在同⼀个配置⽂件中。
准备三台服务器;
代理服务IP:10.0.105.201 --配置本地host解析域名;
后端服务器IP:
nginx-a:10.0.105.199
nginx-b:10.0.105.202
(yum安装)后端服务器将nginx服务启动
配置代理服务器的nginx配置⽂件
worker_processes  4;
worker_rlimit_nofile 102400;
events {
worker_connections  1024;
}
http {
include      pes;
default_type  application/octet-stream;
nginx 配置文件
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log  logs/access.log  main;
sendfile        on;
keepalive_timeout  65;
gzip  on;
upstream testweb {
ip_hash;
server 10.0.105.199:80 weight=2 max_fails=2 fail_timeout=2s;
server 10.0.105.202:80 weight=2 max_fails=2 fail_timeout=2s;
}
server {
listen      80;
server_name  st;
charset utf-8;
#access_log  logs/host.access.log  main;
location / {
proxy_pass testweb;
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;
}
}
}
}
配置后端服务器
10.0.105.202/10.0.105.199服务器yum安装的创建新的配置⽂件:
[root@nginx-server ~]# cd /etc/nginx/conf.d/
[root@nginx-server conf.d]# f
[root@nginx-server conf.d]# f
server {
listen      80;
server_name  localhost;
location / {
root  /usr/share/nginx/html;
index  index.html index.htm;
}
}
[root@nginx-server ~]# nginx -s reload
nginx在1.9.0的时候,增加了⼀个 stream 模块,⽤来实现四层协议(⽹络层和传输层)的转发、代理、负载均衡等。
stream模块的⽤法跟http的⽤法类似,允许我们配置⼀组TCP或者UDP等协议的监听,然后通过proxy_pass来转发我们的请求,通过upstream添加多个后端服务,实现负载均衡。
#4层tcp负载
stream {
upstream myweb {
hash $remote_addr consistent;
server 172.17.14.2:8080;
server 172.17.14.3:8080;
}
server {
listen 80;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass myweb;
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。