架构图


配置过程

配置web服务器

# 1、配置web01,更改配置文件
[root@web01 /etc/nginx/conf.d]# vi test1.conf
server {
listen 8007;
server_name test.gong.com;
root /website/test;
index index.html;
} # 2、创建站点目录。
[root@web01 /etc/nginx/conf.d]# mkdir -p /website/test # 2、添加主页
[root@web01 /etc/nginx/conf.d]# echo 'This is <h1 style="color:red;">web01</h1> page!!' >/website/test/index.html # 4、重启nginx
[root@web01 /etc/nginx/conf.d]# nginx -s reload # 用同样的方法配置web02
## web02监听的8008端口
[root@web01 /etc/nginx/conf.d]# vi test1.conf
server {
listen 8008;
server_name test.gong.com;
root /website/test;
index index.html;
}

配置七层负载均衡

# 1、配置负载均衡
[root@lb01 /etc/nginx/conf.d]# vi upstream.conf
upstream test_gong {
172.16.1.7:8007;
172.16.1.8:8008;
} server {
listen 8005;
server_name test.gong.com;
location / {
proxy_pass http://test_gong;
include proxy_params;
}
} [root@lb01 /etc/nginx/conf.d]# nginx -s reload # 第二台也使用相同的配置
##
[root@db01 /etc/nginx/conf.d]# vi upstream.conf
upstream test_gong {
server 172.16.1.7:8007;
server 172.16.1.8:8008;
} server {
listen 8051;
server_name test.gong.com;
location / {
proxy_pass http://test_gong;
include proxy_params;
}
}

四层负载均衡概念

四层负载均衡

七层负载均衡:只识别域名,是http层。

四层负载均衡:不识别域名,是tcp层,类似于端口转发。

在nginx-1.9.0之前的版本没有四层负载均衡。

ngx_stream_core_module

用于四层负载均衡

The ngx_stream_core_module module is available since version 1.9.0. This module is not built by default, it should be enabled with the --with-stream configuration parameter.

“ngx_stream_core_”模块自1.9.0版起提供。默认情况下,此模块不是生成的,应使用“--with-stream”配置参数启用它。

官方实例

因为是四层的协议,所以不能写在http模块当中。

stream {
upstream backend {
hash $remote_addr consistent; server backend1.example.com:12345 weight=5;
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
} upstream dns {
server 192.168.0.1:53535;
server dns.example.com:53;
} server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
} server {
listen 127.0.0.1:53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns;
} server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
}

四层负载作用

端口转发

做7层负载的高可用

7层负载的端口限制

四层转发的效率比七层的高,因为在tcp的第四层。

大并发的场景会在,七层负载前面添加四层负载。

动静分离

不需要运维来做,开发做的。

  • 动态请求:该请求会调用数据库中的数据。

  • 静态请求:用户请求不会调用数据库。

  • 动态页面:后端开发写的需要调用数据库的页面(python、java、C、php)

  • 静态页面:前端开发写的不需要调用数据库。


配置四层负载均衡

四层负载均衡比七层的转发效率要高,在yum安装nginx的时候不带支持四层负载均衡的模块所以要使用源码编译安装。

[root@nfs01 ~]# tar -xf nginx-1.16.1.tar.gz

[root@nfs01 /application]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

[root@nfs01 ~/nginx-1.16.1]# ./configure --prefix=/application/nginx-1.16.1 --user=www --group=www --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-stream

[root@nfs01 ~/nginx-1.16.1]# make && make install

[root@nfs01 ~]# vi /etc/profile.d/nginx.sh
export PATH="/application/nginx/sbin:$PATH" [root@nfs01 ~]# ln -s /application/nginx-1.16.1/ /application/nginx
[root@nfs01 ~]# source /etc/profile [root@nfs01 ~]# vi /application/nginx/conf/nginx.conf
...
events {
worker_connections 1024;
}
# 加入它在指定的目录下配置单独的配配置文件
include conf.c/*.conf; http {
... [root@nfs01 /application/nginx/conf/conf.c]# vi four_upstream.conf
stream {
upstream lb {
server 172.16.1.5:8005;
server 172.16.1.51:8051;
} log_format main '$remote_addr $remote_port - [$time_local] $status $protocol '
'"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"'; server {
listen 80;
proxy_connect_timeout 3s;
proxy_timeout 3s;
proxy_pass lb; access_log logs/access.log main;
}
}

FBI WARNING
QQ:1402122292 认准原创sheldon 别人叫我晓东
欢迎访问个人站点:shelldon.51vip.biz

nginx的四层转发功能的更多相关文章

  1. 用haproxy实现nginx的proxy_pass转发功能

    公司的网站有个需求,主站点上有两个URL,没有在本地nginx上配置,而是在另一台主机的nginx上配置的站点.如果使用nginx作为反向代理,可以使用proxy_pass指令转发对这两个URL的请求 ...

  2. nginx实现请求转发

    反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...

  3. Nginx配置proxy_pass转发的/路径问题

    Nginx配置proxy_pass转发的/路径问题 在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则 ...

  4. Nginx支持Socket转发过程详解

    序言 一网友在群中问,nginx支持socket转发吗? 实话说,我没做过socket转发,但是我知道socket跟http一样都是通过tcp或者udp通信的,我猜测啦一下nginx应该支持吧,然后又 ...

  5. nginx的反向代理功能和缓存功能

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  6. Nginx 实现端口转发

    https://www.cnblogs.com/zhaoyingjie/p/7248678.html Nginx 实现端口转发 什么是端口转发 当我们在服务器上搭建一个图书以及一个电影的应用,其中图书 ...

  7. 【Nginx】 Nginx实现端口转发

    什么是端口转发 当我们在服务器上搭建一个图书以及一个电影的应用,其中图书应用启动了 8001 端口,电影应用启动了 8002 端口.此时如果我们可以通过 localhost:8001 //图书 loc ...

  8. 【转】Nginx反向代理转发tomcat

    http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...

  9. 使用Nginx的proxy_cache缓存功能取代Squid(转)

    Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302 ...

随机推荐

  1. java面试-JVM常用的基本配置参数有哪些?

    1.-Xms 初始大小内存,默认为物理内存 1/64,等价于 -XX:InitialHeapSize 2.-Xmx 最大分配内存,默认为物理内存的 1/4,等价于 -XX:MaxHeapSize 3. ...

  2. 008-Java中方法的使用(进阶篇)

    目录 一.方法的重载(overload) 一.什么是方法的重载 二.方法执行时的内存变化 一.JVM主要三块内存空间 二.关于栈的数据结构(如图) 三.方法执行过程内存变化(用以下代码演示) 三.方法 ...

  3. YII框架的自定义布局(嵌套式布局,版本是1.1.20)

    0x01 创建控制器 0x02 创建文件夹,之后创建视图文件 0x03 浏览器访问cxy/index控制器,验证 以上就是使用默认的布局,非常简单,那么如果我不想用YII框架默认的布局呢,我想用自定义 ...

  4. POJ1703带权并查集(距离或者异或)

    题意:       有两个黑社会帮派,有n个人,他们肯定属于两个帮派中的一个,然后有两种操作 1 D a b 给出a b 两个人不属于同一个帮派 2 A a b 问a b 两个人关系 输出 同一个帮派 ...

  5. MS08_067漏洞攻击

    MS08_067 MS08_067是典型的缓冲区溢出漏洞,Windows的Server服务在处理特制RPC请求时存在缓冲区溢出漏洞,远程攻击者可以通过发送恶意的RPC请求触发这个溢出,导致完全入侵用户 ...

  6. UVA11021麻球繁衍

    题意:      有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少? 思路:       涉及到全概率公式,因为麻球的 ...

  7. SQLServer的XP_CmdShell提权

    当我们拿到了某个网站SQLServer数据库的SA权限用户密码的话,我们就可以使用XP_CmdShell提权了. 开启xp_cmdshell exec sp_configure 'show advan ...

  8. 预防NSA勒索病毒攻击脚本

    预防445端口勒索病毒修复脚本 直接复制下去,创建一个文件,名字随意后缀是.bat,然后双击就可以了(如果提示拒绝访问,就直接右键管理员,尤其是Win8 Win10). :+添加关键注册表以及停掉并且 ...

  9. 一起来刷《剑指Offer》-- 题目一:找出数组中重复的数字(Python多种方法实现)

    数组中重复的数字 最近在复习算法和数据结构(基于Python实现),然后看了Python的各种"序列"--比如列表List.元组Tuple和字符串String,后期会写一篇博客介绍 ...

  10. CentOS7 搭建 Redis 集群

    一.手动搭建 1. 准备节点 节点数量至少为 6 个才能保证组成完整高可用的集群 (1) 目录结构 cluster ├── 9001 │   ├── data │   │   ├── appendon ...