linux四层负载均衡和https

四层负载均衡和https

四层负载均衡

1.四层负载均衡特点
	1.1.四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;
    1.2.四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)
    1.3.四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同时的使用)
    1.4.四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;
    1.5.通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。

2、四层的使用场景
    1、MySQL服务
    2、SSH代理端口
    3、网站的负载均衡代理

3、四层的实现
    必须要有这个可以通过nginx-v来查看是否有 --with-stream   需要用官方源下载的nginx才有,nginx.org
    注:epel源安装的Nginx无法使用四层负载均衡
    四层负载均衡和七层负载均衡基本一样,也有连接池stream ,proxy_pass往连接池丢请求
    #nginx.conf也要修改http内容删除 加上stream{
    	include /etc/nginx/stream.conf/*.conf;
    }
    #upstream:四层只能配置在stream模块里,七层只能配置在http    http==stream
    #配置文件也不能写在conf.d里 
	upstream [连接池的名称] {
            [存放的IP]
            server [ip1+端口80];
            server [ip1+端口80];
				
	}
	server{
		listen 80;
			proxy_pass [连接池名称]

	}
#实际nginx.conf配置
vim /etc/nginx/nginx.conf
    user  nginx;
    worker_processes  auto;

    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;


    events {
        worker_connections  1024;
    }

    stream{
            include /etc/nginx/stream.conf/*.conf;

    }
# vim /etc/nginx/stream.conf/stream.conf
	upstream lol{
        server 172.16.1.5:80; #指向了lb01的ip
    }

    server{
            listen 80;
            proxy_pass lol;
    }
    

四层负载均衡案例

案例1. :要求使用192.168.15.6的1234端口链接192.168.15.5的22端口
	修改四层负载均衡   /etc/nginx/stream.conf/ssh.conf
        upstream lol{
            server 172.16.1.5:22;    #指定对方IP和端口
    }

    server{
            listen 1234;  #指定自己用哪个端口
            proxy_pass lol;
    }
 #测试(通过nginx代理ssh)
	 ssh 192.168.15.6 -p 1234
	 
案例2:要求使用192.168.15.6的33060端口代理192.168.15.51的3306端口
vim mysql.conf 
    upstream gailun{
            server 172.16.1.51:3306;
    }

    server{
            listen 33060;
            proxy_pass gailun;
    }
#测试在db01机器
mysql -uroot -p123456 -h192.168.15.6 -P33060

HTTPS

#介绍
	为什么需要使用HTTPS,因为HTTP不安全,当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所以黑客无法窃取或者篡改数据报文信息,同时也避免网站传输时信息泄露。
	简而言之HTTPS是主要用来加密传输
HTTP的问题:
	中间人攻击,网站被代理修改

如何使用HTTPS认证
在这里插入图片描述

#详细解释
我们首先需要申请证书,先去登记机构进行身份登记,我是谁,我是干嘛的,我想做什么,然后登记机构再通过CSR发给CA机构,CA中心通过后会生成一堆公钥和私钥,公钥会在CA证书链中保存,公钥和私钥证书我们拿到后,会将其部署在WEB服务器上
 
1.当浏览器访问我们的https站点时,他会去请求我们的证书
2.Nginx这样的web服务器会将我们的公钥证书发给浏览器
3.浏览器会去验证我们的证书是否合法有效
4.CA机构会将过期的证书放置在CRL服务器,CRL服务的验证效率是非常差的,所以CA有推出了OCSP响应程序,OCSP响应程序可以查询指定的一个证书是否过期,所以浏览器可以直接查询OSCP响应程序,但OSCP响应程序性能还不是很高
5.Nginx会有一个OCSP的开关,当我们开启后,Nginx会主动上OCSP上查询,这样大量的客户端直接从Nginx获取证书是否有效
6.浏览器再次访问的时候,web服务器会将证书和验证结果一起发给浏览器,浏览器直接与我们建立连接
#使用HTTPS认证
1.检查nginx -V 是否有这个--with-http_ssl_module
	
2.创建证书存放目录ssl_key
	[root@web02 ~]# mkdir /etc/nginx/ssl_key
3.制造证书
	[root@web02 ~]# cd /etc/nginx/ssl_key/               #先要到这个目录下
	[root@web02 ssl_key]# openssl genrsa -idea -out server.key 2048                    #(生成私钥)
        Generating RSA private key, 2048 bit long modulus
        ....+++
        .............+++
        e is 65537 (0x10001)	
    [root@web02 ssl_key]# openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt                   #生成公钥
    会在该目录下生成两个文件
    [root@web02 ssl_key]# ll
    total 8
    -rw-r--r-- 1 root root 1220 Nov  1 19:18 server.crt    #公钥
    -rw-r--r-- 1 root root 1708 Nov  1 19:18 server.key	   #私钥
4.配置nginx代理
[root@web02 ssl_key]# vim /etc/nginx/conf.d/game.conf 
	server{
        server_name cjml.com;
        listen 443 ssl;            #ssl开启  监听443端口
        ssl_certificate /etc/nginx/ssl_key/server.crt;      #指定公钥
        ssl_certificate_key /etc/nginx/ssl_key/server.key;	#指定私钥
        location / {
                root /usr/share/nginx/html5-mario;
                index index.html;
        }

}

5.重启nginx并测试
systemctl restart nginx
#网址输入下面内容,发现如下图即为成功
https://192.168.15.8/demo.html 

在这里插入图片描述

全栈HTTPS(在负载均衡里设置https)

#先把web02nginx配置修改回来

1.创建ssl_key
	[root@lb01 ssl_key]# mkdir /etc/nginx/ssl_key
2.生成公钥私钥
	[root@lb01 ssl_key]# openssl genrsa -idea -out server.key 2048      #私钥
	[root@lb01 ssl_key]# openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt         #公钥
3.设置nginx代理,并加入强制跳转
[root@lb01 ssl_key]# vim /etc/nginx/conf.d/game.conf 	
    upstream game{
            server 172.16.1.8:80;
            server 172.16.1.7:80;
            server 172.16.1.9:80;
    }
    #强制跳转   
    server{

        listen 80;
        server_name cjml.com;
        return 302 https://cjml.com;

}
    server {
            server_name cjml.com;
            listen 443 ssl;
            ssl_certificate /etc/nginx/ssl_key/server.crt;
            ssl_certificate_key /etc/nginx/ssl_key/server.key;
            location /{
                    proxy_pass http://game;
                    include proxy_params;
            }
    }

4.重启nginx并测试
systemctl restart nginx
posted @ 2021-11-01 20:32  迪迦张  阅读(203)  评论(0编辑  收藏  举报