lvs的nat和dr实现,nginx反向代理,虚拟主机

1.LVS的基本用法

1.管理工具:ipvsadm
2.基本概念

VS:Virtual Server,调度器
RS:Real Server(lvs), upstream server(nginx)    backend server(haproxy)  实际服务器
CIP:Client IP  客户端IP
VIP: Virtual serve IP VS外网的IP
DIP: Director IP  VS内网的IP
RIP: Real server IP   实际服务器IP

3.转发模式:

lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
lvs-dr:操纵封装新的MAC地址   (应用更广泛)
lvs-tun:在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP

4.指定VS服务器规则命令(指定VIP和算法)

 ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
 -A 增加
 -E  修改
 ipvsadm -D -t|u|f service-address 删除 

 -t: TCP协议的端口,VIP:TCP_PORT    -t 192.168.0.119:80
-u: UDP协议的端口,VIP:UDP_PORT
-f:firewall MARK,标记,一个数字
 [-s scheduler]:指定集群的调度算法,默认为wlc 

5.指定RS服务器规则命令(指定RIP和lvs类型)

ipvsadm -a|e -t|u|f service-address(VIP) -r server-address(RIP) [-g|i|m] [-w weight]
-a 增加
-e  修改
ipvsadm -d -t|u|f service-address -r serveraddress   删除
指定lvs使用类型
-g: gateway, dr类型,默认   -i: ipip, tun类型   -m: masquerade, nat类型
-w weight:权重

6.其他用法

ipvsadm –C  清空
ipvsadm –R  重载
ipvsadm -S [-n]  保存
ipvsadm -Z [-t|u|f service-address] 清空计数器
ipvsadm -L|l [options]  查看规则
ipvsadm -Ln 查看规则(常用)
--numeric, -n:以数字形式输出地址和端口号
--exact:扩展信息,精确值
--connection,-c:当前IPVS连接输出
--stats:统计信息
--rate :输出速率信息 

7.保存规则3种方法(-n禁止解析成主机名)

1.ipvsadm-save -n > /PATH/TO/IPVSADM_FILE    (建议保存至/etc/sysconfig/ipvsadm)
2.ipvsadm -Sn > /PATH/TO/IPVSADM_FILE
3.systemctl stop ipvsadm.service  (这也可以保存)

8.加载规则3种方式

1.ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
2.ipvsadm -R < /PATH/FROM/IPVSADM_FILE
3.systemctl restart ipvsadm.service

9.开机启动:


systemctl enabled ipvsadm.service 

10.打标签 (-f)
借助于防火墙标记来分类报文,而后基于标记定义集群服务; 可将多个不同的应用使用同一个集群服务进行调度
例如http和https 共用一个集群 ,使得80 和443 端口共用一个集群

在Director主机(LVS主机)打标记:

iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER (写一个数字)

在Director主机基于标记定义集群服务:

ipvsadm -A -f NUMBER [options]

iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10
ipvsadm -A -f 10 -s rr # -f 10就是引用这个标签
ipvsadm -a -f 10 -r 192.168.30.17 -g
ipvsadm -a -f 10 -r 192.168.30.27 -g

11.持久连接(-p)
session 绑定:对共享同一组RS的多个集群服务,需要统一进行绑 定,lvs sh算法无法实现
持久连接( lvs persistence )模板:实现无论使用任何调度算法, 在一段时间内(默认360s ),能够实现将来自同一个地址的请求始 终发往同一个RS

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]   不加时间默认6分钟,单位秒

如 ipvsadm -A -t 192.168.0.1 -s rr -p 720

12.指定算法(-s)
静态方法:不管RS工作情况调度

1、RR:roundrobin,轮询   (循环调度)

2、WRR:Weighted RR,加权轮询 (按比列循环调度) 

3、SH:Source Hashing,实现session sticky,源IP地址 hash;将来自于同一个IP地址的请求始终发往第一次挑中的 RS,从而实现会话绑定   (保持会话调度) 

4、DH:Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商  (正向代理调度服务器到缓存服务器使用,利用目标地址固定调度到同一缓存服务器中,提高缓存服务器利用率) 

动态方法:考虑RS工作情况调度

1、LC: 适用于长连接应用  公式:Overhead=activeconns*256+inactiveconns
2、WLC:默认调度方法(加入权重)  公式:Overhead=(activeconns*256+inactiveconns)/weight
3、SED:初始连接高权重优先(加入初始权重判断)  公式:Overhead=(activeconns+1)*256/weight ,
4、NQ:第一轮均匀分配,后续SED
5、LBLC:Locality-Based LC,动态的DH算法,使用场景: 根据负载状态实现正向代理
6、LBLCR:带复制功能的LBLC 解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,也是实现正向代理中使用,减轻某个缓存服务器压力

2.LVS实现NAT

1.搭建4台主机

客户端:192.168.0.109
LVS调度器:VIP:192.168.0.112  DIP:192.168.1.112
RS服务器两台 192.168.1.113  192.168.1.114

2.搭建网络拓扑结构
lvs服务器,搭建两个网卡,设定VIP和DIP,并且开启路由转发功能

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

rs服务器,由于NAT模式中回应包要回到LVS服务器,所以RS服务器网关要指向DIP

3.在rs服务器搭建http服务器,并搭建主页

[root@localhost ~]#echo 192.168.1.113 > /var/www/html/index.html
[root@localhost ~]#echo 192.168.1.114 > /var/www/html/index.htm

启动httpd服务

4.在LVS服务器安装ipvsadm设定规则

[root@localhost ~]# yum install ipvsadm
[root@localhost ~]# ipvsadm -A -t 192.168.0.112:80 -s wrr #指定加权轮询 算法
[root@localhost ~]# ipvsadm -a -t 192.168.0.112:80 -r 192.168.1.113 -m -w 2  #-m指定NAT -w 指定权重
[root@localhost ~]# ipvsadm -a -t 192.168.0.112:80 -r 192.168.1.114 -m
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.112:80 wrr
  -> 192.168.1.113:80             Masq    2      0          0
  -> 192.168.1.114:80             Masq    1      0          0

5.在客服端测试

[root@centos7 ~]#curl 192.168.0.112
192.168.1.114
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113
[root@centos7 ~]#curl 192.168.0.112
192.168.1.114
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113

3.LVS实现DR模式

1.搭建5台主机

客户端:192.168.0.109
前端路由器:192.168.0.115(客户端网关) 192.168.2.115(lvs服务器vip网关)  192.168.1.115(rs服务器网关)(192.168.2.115和192.168.1.115绑定在一个网卡中)
LVS调度器:VIP:192.168.2.112  DIP:192.168.1.112
RS服务器两台 192.168.1.113  192.168.1.114

注意:RS和Director要在同一个物理网络,因此整个内网在(物理上)是一个网段,因此客户端与路由器用桥接vmnet1,而路由器另一网卡与lvs服务器、rs服务器在仅主机模式中一个网段vmnet2。

2.搭建网络拓扑
客户端网关指向192.168.0.115
路由器启动路由转发

[root@centos7 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward

rs服务器网关指向192.168.1.115

3.RS服务器禁用arp应答和通告

[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

[root@localhost ~]#sysctl -p

4.RS服务器在lo网卡中绑定VIP 192.168.2.112

[root@localhost ~]#ip a a 192.168.2.112/32 dev lo

5.LVS服务器加入规则

[root@localhost ~]# ipvsadm -A -t 192.168.2.112:80 -s wrr   指定lvs的VIP和算法
[root@localhost ~]# ipvsadm -a -t 192.168.2.112:80 -r 192.168.1.113  -w 2  # -w 指定权重
[root@localhost ~]# ipvsadm -a -t 192.168.2.112:80 -r 192.168.1.114
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.112:80 wrr
  -> 192.168.1.113:80             Route    2      0          0
  -> 192.168.1.114:80             Route   1      0          0

6.测试网页

[root@centos7 ~]#curl 192.168.2.112
192.168.1.114
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113
[root@centos7 ~]#curl 192.168.2.112
192.168.1.114
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113

4.nginx实现虚拟主机

1.安装nginx服务
2.建立自己独立配置文件vhost.conf,定义三个虚拟主机

[root@centos7 ~]#vim /etc/nginx/conf.d/vhost.conf
server {
        server_name www.a.com;   #定义主机www.a.com
        root /data/nginx/a;
        }

server {
        server_name www.b.com;

  location / {
                alias /data/nginx/b/;#注意要以 / 结尾
                }
        }
server {
        listen 192.168.0.109:8080;#定义8080端口为一个主机
        root /data/nginx/c;
        location /image/ {
                root /data/nginx/;
                }
        }

3.启动nginx服务,查看80端口和8080端口是否打开

[root@centos7 ~]#nginx
[root@centos7 ~]#ss -ntl
State      Recv-Q Send-Q           Local Address:Port                          Peer Address:Port
LISTEN     0      128                          *:111                                      *:*
LISTEN     0      128              192.168.0.109:8080                                     *:*
LISTEN     0      128                          *:80                                       *:*
LISTEN     0      5                192.168.122.1:53                                       *:*
LISTEN     0      128                          *:22                                       *:*
LISTEN     0      128                  127.0.0.1:631                                      *:*
LISTEN     0      100                  127.0.0.1:25                                       *:*
LISTEN     0      128                          *:43550                                    *:*
LISTEN     0      128                         :::111                                     :::*
LISTEN     0      128                         :::80                                      :::*
LISTEN     0      128                         :::22                                      :::*
LISTEN     0      128                        ::1:631                                     :::*
LISTEN     0      100                        ::1:25                                      :::*
LISTEN     0      128                         :::46052                                   :::* 

4.创建目录和网页

[root@centos7 ~]#mkdir -pv /data/nginx/{a,b,c,image}
mkdir: created directory ‘/data/nginx’
mkdir: created directory ‘/data/nginx/a’
mkdir: created directory ‘/data/nginx/b’
mkdir: created directory ‘/data/nginx/c’
mkdir: created directory ‘/data/nginx/image’
[root@centos7 ~]#echo www.a.com > /data/nginx/a/index.html
[root@centos7 ~]#echo www.b.com > /data/nginx/b/index.html
[root@centos7 ~]#echo 8080 > /data/nginx/c/index.html
[root@centos7 ~]#echo images > /data/nginx/image/index.html
[root@centos7 ~]#chown -R nginx:nginx /data/nginx/
[root@centos7 ~]#ll /data/nginx/
total 0
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:17 a
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:17 b
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:18 c
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:18 image

5.客户端加入名字解析

[root@localhost ~]# vim /etc/hosts
192.168.0.109 www.a.com www.b.com
测试
[root@localhost ~]# curl www.a.com
www.a.com
[root@localhost ~]# curl www.b.com
www.b.com
[root@localhost ~]# curl 192.168.0.109:8080
8080
[root@localhost ~]# curl 192.168.0.109:8080/image/
images

6.定义虚拟主机选项

server {
    listen address[:PORT]|PORT;    定义监听地址 端口
    server_name SERVER_NAME;    定义服务名字
    root /PATH/TO/DOCUMENT_ROOT;    定义主页路径
 } 

1.listen address[:PORT]|PORT; 定义监听地址 端口

加入default_server 变成默认主机
ssl  限制仅能够通过ssl连接提供服务
backlog=number 超过并发连接数后,新请求进入后援队列的长度  (等待队列)
rcvbuf=size 接收缓冲区大小
sndbuf=size 发送缓冲区大小 

2.server_name name ...;

虚拟主机的主机名称后可跟多个由空白字符分隔的字符串 ?
支持*通配任意长度的任意字符
server_name *.magedu.com  www.magedu.* ?
支持~起始的字符做正则表达式模式匹配,性能原因慎用
server_name  ~^www\d+\.magedu\.com$  \d 表示 [0-9] ?
匹配优先级机制从高到低:
(1) 首先是字符串精确匹配 如:www.magedu.com
(2) 左侧*通配符  如:*.magedu.com
(3) 右侧*通配符  如:www.magedu.*
(4) 正则表达式   如: ~^.*\.magedu\.com$
(5) default_server

3.tcp_nodelay on | off;

在keepalived模式下的连接是否启用TCP_NODELAY选项  当为off时,延迟发送,合并多个请求后再发送
默认On时,不延迟发送
可用于:http, server, location 

4.sendfile on | off;

是否启用sendfile功能,在内核中封装报文直接发送  默认Off
可以开启

5.server_tokens on | off | build | string

是否在响应报文的Server首部显示nginx版本  建议关闭
在http{...}中

6.root 设置web资源的路径映射;用于指明请求的URL所对应的文档 的目录路径,
用于http, server, location, if in location

7.location [ = | ~ | ~* | ^~ ] uri { ... }

location @name { ... }
在一个server中location配置段可存在多个,用于实现从uri到 文件系统的路径映射;
ngnix会根据用户请求的URI来检查定义的所有 location,并找出一个最佳匹配,而后应用其配置  

示例:

server {
        ...
        server_name  www.magedu.com;
        location /images/ {    (单独设定该主机/images访问路径的实际目录)
                    root  /data/imgs/;
                 }
         }  

 http://www.magedu.com/images/logo.jpg    --> /data/imgs/images/logo.jpg   

匹配模式

=:对URI做精确匹配;
location = /index.html {
        ...
     }
http://www.magedu.com/index.html 匹配  http://www.magedu.com/test.html 不匹配 

^~:对URI的最左边部分做匹配检查,不区分字符大小写
~:对URI做正则表达式模式匹配,区分字符大小写
~*:对URI做正则表达式模式匹配,不区分字符大小写
不带符号:匹配起始于此uri的所有的uri
匹配优先级从高到低:  =, ^~, ~/~*, 不带符号 

8.alias path;

路径别名,文档映射的另一种机制;仅能用于location上下文
  alias 和root区别
 示例: http://www.magedu.com/bbs/index.html
location /bbs/ {
        alias /web/forum/;
        }      --> /web/forum/index.html     (用/web/forum/替换/bbs/)
location /bbs/ {
        root /web/forum/;
         }      --> /web/forum/bbs/index.html  (用/web/forum/替换/)
注意:location中使用root指令和alias指令的意义不同
(a) root,给定的路径对应于location中的/uri/左侧的/
(b) alias,给定的路径对应于location中的/uri/右侧的/ 

9.index file ...; 指定默认网页文件

10.error_page code ... [=[response]] uri;

定义错误页,以指定的响应状态码进行响应
可用位置:http, server, location, if in location
error_page  404  /404.html
error_page  404  =200  /404.html  重定向到响应码200   防止浏览器劫持自己错误页面

11.try_files file ... uri;

try_files file ... =code;
按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线 表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重 定向到最后一个参数,

找不到的文件会显示默认文件


location /images/ {
    try_files $uri /images/default.gif;      在images找不到,显示default.gif
    }
location / {
    try_files $uri $uri/index.html $uri.html =404;
     }
 $uri指用户输入路径

12.keepalive_timeout timeout [header_timeout]; 设定保持连接超时时长,0表示禁止长连接,默认为75s

13.keepalive_requests number; 在一次长连接上所允许请求的资源的最大数量 默认为100

14.keepalive_disable none | browser ... 对哪种浏览器禁用长连接

15.send_timeout time; 向客户端发送响应报文的超时时长,此处是指两次写操作 之间的间隔时长,而非整个响应过程的传输时长

16.client_body_buffer_size size;

用于接收每个客户端请求报文的body部分的缓冲区大小 ;默认为16k;超出此大小时,其将被暂存到磁盘上的由下面 client_body_temp_path指令所定义的位置  

17.client_body_temp_path path [level1 [level2 [level3]]];

设定用于存储客户端请求报文的body部分的临时存储路 径及子目录结构和数量
目录名为16进制的数字;
client_body_temp_path   /var/tmp/client_body  1 2 2
1 1级目录占1位16进制,即2^4=16个目录 0-f
2 2级目录占2位16进制,即2^8=256个目录 00-ff
2 3级目录占2位16进制,即2^8=256个目录 00-ff 

16和17 是用于处理用户上传文件,创建多层目录 避免一个目录下文件过多影响效率

18.limit_rate rate; 限制响应给客户端的传输速率,单位是bytes/second 默认值0表示无限制

19.limit_except method ... { ... },

仅用于location  限制客户端使用除了指定的请求方法之外的其它方法
method:GET, HEAD, POST, PUT, DELETE   MKCOL, COPY, MOVE, OPTIONS, PROPFIND,   PROPPATCH, LOCK, UNLOCK, PATCH 

如:limit_except GET {    (除了get方法限制)
            allow 192.168.1.0/24;   允许该网段的人使用get以外方法
            deny  all;    其他人拒绝使用get以外的方法
            }
  get方法实际上包含head方法

20.aio on | off | threads[=pool]; 是否启用aio功能 ,异步io,提高效率

21.directio size | off; 当文件大于等于给定大小时,例如directio 4m,先写缓存,达到4m时候同步(直接)写磁盘 , ,off 值同步写磁盘

22.open_file_cache off; 或者 open_file_cache max=N [inactive=time];

nginx可以缓存以下三种信息:  (1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息
max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理
inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中 的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项 即为非活动项,将被删除

23.open_file_cache_errors on | off; 是否缓存查找时发生错误的文件一类的信息 默认值为off

24.open_file_cache_min_uses number;

open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项  默认值为1 open_file_cache_min_uses 2;
指定时间内被访问2次的才缓存,少于则从缓存中删除

25.open_file_cache_valid time; 缓存项有效性的检查频率 默认值为60s


5.nginx实现反向代理

实现应用级反向代理(动静分离)
需要nginx代理服务器192.168.0.109 192.168.1.109
静态服务器192.168.1.112
动态服务器192.168.1.113
数据库服务器192.168.1.115
nfs服务器192.168.1.114

主要思路:利用nginx反向代理根据用户的uri来把请求转发到不同服务器,动态php程序转发到192.168.1.113服务器处理,静态图片通过192.168.1.112服务器处理,nfs服务器实现各个服务器共享存储,访问数据库则是192.168.1.115服务器

A.192.168.1.114服务器
1.在192.168.1.114启动nfs服务并拷贝phpmyadmin到要共享目录

[root@localhost ~]# systemctl start nfs-server
[root@localhost ~]# tar -xf phpMyAdmin-4.4.15.10-all-languages.tar.xz  -C /data/

2.修改phpmyadmin配置文件

[root@localhost phpmyadmin]# cp config.sample.inc.php config.inc.php
[root@localhost phpmyadmin]# vim config.inc.php
$cfg[‘blowfish_secret‘] = ‘sda1254z‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */   #修改该随机数
$cfg[‘Servers‘][$i][‘host‘] = ‘192.168.1.115‘;

3.编辑共享目录配置,把phpmyadmin文件夹共享出去

[root@localhost ~]# vim /etc/exports.d/wp.exports
/data/phpmyadmin 192.168.1.0/24(rw,sync,root_squash,no_all_squash)

4.启动查看共享目录

[root@localhost ~]# exportfs -r
[root@localhost ~]# exportfs -v
/data/phpmyadmin
           192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

B.在192.168.1.112安装nginx服务器用于处理静态页面
1.挂载共享目录

[root@localhost ~]# mkdir -p /apps/phpmyadmin
[root@localhost ~]# mount  192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/

2.安装nginx服务并修改其默认主页

[root@localhost ~]#vim /etc/nginx/nginx.conf
 server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        root         /apps/phpmyadmin;

        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

C.在192.168.0.109安装nginx服务器
1.修改配置文件让其实现动静分离反代功能

[root@centos7 ~]#vim /etc/nginx/conf.d/www.conf
server {
        server_name www.a.com;
        root /apps/phpmyadmin/;
        location / {
                index index.php index.html;

        }
        location ~* \.(gif|jpg|png|bmp|jpeg)$ {
                proxy_pass http://192.168.1.112;  #把图片文件交给192.168.1.112处理
        }
        location ~* \.php$ {
                proxy_pass http://192.168.1.113; #把php交给192.168.1.113处理
        }
}

2.挂载共享目录

[root@localhost ~]# mkdir -p /apps/phpmyadmin
[root@localhost ~]# mount  192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/

D.在192.168.1.113安装httpd fpm服务
1.fpm需要编译安装php-7.1.26,详细步骤参考上一篇文章
2.修改httpd配置文件,加载fpm处理动态页面

[root@localhost network-scripts]# vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php
DocumentRoot /apps/phpmyadmin/
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/apps/phpmyadmin/$1
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<Directory "/apps/phpmyadmin/">
Options None
AllowOverride None
Require all granted
</Directory>

3.挂载共享目录

[root@localhost ~]# mkdir -p /apps/phpmyadmin
[root@localhost ~]# mount  192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/

E.在192.168.1.115安装mariadb
1.安装修改配置

[root@localhost network-scripts]# yum install mariadb-server
[root@localhost network-scripts]# vim /etc/my.cnf
[mysqld]
innodb_file_per_table = on
skip_name_resolve = on

2.建立数据库和账号

MariaDB [(none)]> create database wpdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on wpdb.* to wpuser@‘%‘ identified by "centos";
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

F.客户端测试
1.修改host文件解析域名

[root@centos6 ~]# vim /etc/hosts
192.168.0.109 www.a.com

2.在浏览器需要www.a.com

3.查看192.168.1.112日志文件,确实有png图片被调度到该服务器处理

[root@localhost ~]# tail -n 3 /var/log/nginx/access.log
192.168.1.109 - - [27/Mar/2019:18:49:59 +0800] "GET /themes/pmahomme/img/window-new.png HTTP/1.0" 200 468 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
192.168.1.109 - - [27/Mar/2019:18:49:59 +0800] "GET /themes/pmahomme/img/b_more.png HTTP/1.0" 200 111 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
192.168.1.109 - - [27/Mar/2019:18:52:02 +0800] "GET /themes/pmahomme/img/s_unlink.png HTTP/1.0" 200 589 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"

4.查看192.168.1.113日志文件,确实有php请求被调度到该服务器处理

[root@localhost ~]# tail -n 3 /var/log/httpd/access_log
192.168.1.109 - - [27/Mar/2019:18:49:59 +0800] "POST /navigation.php?ajax_request=1 HTTP/1.0" 200 2015 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.1.109 - - [27/Mar/2019:18:50:00 +0800] "POST /ajax.php HTTP/1.0" 200 1383 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.1.109 - - [27/Mar/2019:18:50:00 +0800] "POST /version_check.php HTTP/1.0" 200 64 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"

原文地址:https://blog.51cto.com/6289984/2370137

时间: 2024-11-03 21:55:24

lvs的nat和dr实现,nginx反向代理,虚拟主机的相关文章

Nginx反向代理、负载均衡, keepalived高可用

Nginx反向代理.负载均衡,  keepalived高可用 Nginx反向代理.负载均衡,  keepalived高可用 一.Nginx反向代理.负载均衡 1.什么是反向代理.负载均衡 严格的说,Nginx仅仅是作为Nginx Proxv反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡.那么,反向代理和负载均衡有什么区别呢? 普通负载均衡软件,例如大名鼎鼎的LVS,其实现的功能只是对请求数据包的转发(也可能会改写数据包).传递,其中DR模式明

nginx 反向代理实现负载均衡理论

Nginx负载均衡集群介绍 负载均衡集群提供了一种廉价,有效,透明的方法,来扩展网络设备和服务器的负载,带宽和吞吐量,同时加强了网络数据处理能力,提高了网络的灵活性和可用性. 搭建负载均衡服务的需求: (1)把单台计算机无法承受的大规模并发访问或数据流量分担到多台节点设备上,分别进行处理,减少用户等待响应的时间,提升用户体验. (2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高. (3)7*24小时的服务保证,任意一个

Linux系统——Nginx反向代理与负载均衡

集群集群是指一组(若干个)相互独立的计算机,利用高速通信网路组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运用各自服务的独立服务器.这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理.当用户客户机请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器. 特点:(1)高性能用户通过Internet到公司的网关,网关通过防火墙,调载到前端的主负载均衡服务器上(有主有备,预防单点问题),主负载均

nginx反向代理

1. 操作系统 CentOS 6.4 x86_64 2.软件版本 Nginx 1.4.2 3.实验拓扑 注,实验拓扑见下文. 4.安装yum源 1 2 3 [root @nginx ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [[email protected] ~]# rpm -ivh http://download.fedoraproject.org/

Cento7+Nginx反向代理实现多域名跳转

近期比较忙,所以很少写文档了,最近有个项目组有多个环境需要做映射,所以就想到了通过Nginx反向代理实现多域名地址跳转,以致就总结了一下,其实说到代理我们大家都知道.最常见最常说的所谓的就是NAT,就是将内部多个地址请求通过代理转达到外部.这个就叫正向代理,那什么是反向代理呢-就是和正向代理相反:所以很好理解,Nginx反向代理功能很强大,可以通过一个nginx代理实现多个域名及不同的端口进行代理转发,所以在日常的运维中很有帮助.我们今天的演示是通过Nginx反向代理实现内部不同的多个域名转发.

Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

搭建nginx反向代理用做内网域名转发

基于域名的7层转发的实现(NAT+反向代理) 在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难.一一对应关系也没有规律.访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下: Public IP Public Port Number Internal IP Internal Port Number Note 1.1.1.1 80 192.168.1.10

nginx反向代理缓存服务器的构建

Nginx反向代理缓存服务器构建 一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理:与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就