一、Ip区分虚拟主机(可以用EditPlus这个编辑器)
具体看视频:百度网盘
链接:https://pan.baidu.com/s/1Xv3nOLos9Qh7B9INLvl8Mw
提取码:zjnt
1. 查看内容
[root@localhost /]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
执行命令查看内容
[root@localhost network-scripts]# vim ifcfg-eth0
2. 复制一份文件出来
将/etc/sysconfig/network-scripts/ifcfg-eth0文件复制一份,命名为ifcfg-eth0:1
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1
修改新文件里的两个内容
DEVICE=eth0:1
IPADDR=192.168.1.109
其他项不用修改
3. 再复制一份内容
cp ifcfg-eth0 ifcfg-eth0:2
DEVICE=eth0:2
修改192.168.1.110
4. 重启虚拟机系统
二、配置nginx基于ip地址的虚拟主机
1. Nginx的配置文件
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server { #一个Server就是一个虚拟主机
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
2. 基于ip的虚拟主机配置
server {
listen 80;
server_name 192.168.1.109;
location / {
root html-109;
index index.html index.htm;
}
}
server {
listen 80;
server_name 192.168.1.110;
location / {
root html-110;
index index.html index.htm;
}
}
3. 去nginx下修改配置文件,复制两个html文件夹,名字分别为 html-109 html-110
[root@localhost nginx]# cp html html-109 -r
[root@localhost nginx]# cp html html-110 -r
4. 修改文件夹里的index.html
用于区分通过不同ip访问的首页
[root@localhost nginx]# vim html-109/index.html
5. 110同上修改
[root@localhost nginx]# vim html-110/index.html
6. 重启nginx,测试
测试url: 192.168.1.109 192.168.1.110
三、基于端口的虚拟主机
1. 添加端口号配置
server {
listen 81;
server_name 192.168.1.109;
location / {
root html-81;
index index.html index.htm;
}
}
server {
listen 82;
server_name 192.168.1.110;
location / {
root html-82;
index index.html index.htm;
}
}
2. 复制html文件,修改里面的index.html代码
3. 修改文件
测试url http://192.168.1.110:81/ http://192.168.1.110:82/
四、基于域名的虚拟主机
最有用的虚拟主机配置方式。一个域名只能绑定一个ip地址,一个ip地址可以被多个域名绑定。
1. 设置域名和ip的映射关系
修改window的hosts文件:
C:\Windows\System32\drivers\etc
工具链接地址:
链接:https://pan.baidu.com/s/10iY6XJNT_1xZ0O17VLhAZg
提取码:4d6p
2. 基于域名的虚拟主机配置
2.1 修改配置文件
server {
listen 80;
server_name www.cctv.com;
location / {
root html-www;
index index.html index.htm;
}
}
server {
listen 80;
server_name hehe.cctv.com;
location / {
root html-hehe;
index index.html index.htm;
}
}
修改配置文件后,需要nginx重新加载配置文件。
2.2 复制文件
修改内容
2.3 重启nginx
需要使用工具修改host文件,使用管理员权限运行这个工具,使用这个工具修改host文件的原理是绕开了DNS的解析.
2.4 测试url:www.cctv.com
五、Nginx的反向代理
输入网址后,域名解析器将网址解析为一个IP,通过这个IP访问的服务器
比如:百度 www.baidu.com
它的IP为61.135.169.125,这个ip可能会变,它只是就近选择的百度的服务器,因为百度的服务器遍布全国
1. 反向代理与正向代理
正向代理:
反向代理:
2. 使用nginx实现反向代理
Nginx只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。
2.1 安装JDK和 Tomcat
在一个虚拟机上创建两个tomcat实例,模拟多个服务器。
安装过程就不说了,之前的文章中有详细的安装步骤
这是链接:https://mp.csdn.net/postedit/85229049
2.2 创建好两个tomcat后
2.3 修改tomcat2的端口号
[root@localhost tomcats]# vim tomcat2/conf/server.xml
2.4 修改三个地方的端口号如下图
2.5 启动tomcat,测试
[root@localhost tomcats]# tomcat1/bin/startup.sh
2.6 修改首页显示
为了区分访问的的服务器,修改下tomcat的首页内容
[root@localhost tomcats]# vim tomcat1/webapps/ROOT/index.jsp
把 tomcat1和tomcat2都修改了
3. 需求
通过访问不同的域名访问运行在不同端口的tomcat
8080.cctv.com 访问运行8080端口的tomcat
8081.cctv.com 访问运行8081端口的tomcat
4. 域名需要配置host文件:
4.1 Nginx的配置
upstream tomcatserver1 {
server 192.168.1.108:8080;
}
upstream tomcatserver2 {
server 192.168.1.108:8081;
}
server {
listen 80;
server_name 8080.cctv.com;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
}
server {
listen 80;
server_name 8081.cctv.com;
location / {
proxy_pass http://tomcatserver2;
index index.html index.htm;
}
}
如果在同一个域名下有多台服务器提供服务,此时需要nginx负载均衡。
4.2 测试:
- cctv.com
- Cctv.com
nginx只是做了一个请求的转发,而没有做任何的业务处理
六、负载均衡
1. 什么是负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
2. 需求
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.1.108
tomcat1服务器:192.168.1.108:8080
tomcat2服务器:192.168.1.108:8081
3. 配置nginx的负载均衡
测试:
8080.cctv.com, 第一次访问 8080服务器,第二次刷新访问8081服务器
4. 配置负载均衡的权重
这个可以根据服务器的配置来进行分配,服务器配置越高,分配的权重可以越大,访问次数也就越多,权重默认是1
节点说明:
在http节点里添加:
#定义负载均衡设备的 Ip及设备状态
upstream myServer {
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
在需要使用负载的Server节点下添加
proxy_pass http://myServer;
upstream 每个设备的状态:
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails 次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
七、高可用(keepalived)
1. 安装环境
su - root
yum -y install kernel-devel*
yum -y install openssl-*
yum -y install popt-devel
yum -y install lrzsz
yum -y install openssh-clients
yum -y install libnl libnl-devel popt
2. 安装keepalived
2.1
将keepalived-1.2.15.tar.gz上传到服务器/usr/local/下。
cd /usr/local
tar -zxvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
执行配置命令
./configure --prefix=/usr/local/keepalived
2.2 编译
make
2.3 安装
make install
至此安装成功
2.4 拷贝执行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
2.5、将init.d文件拷贝到etc下,加入开机启动项
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
2.6、将keepalived文件拷贝到etc下,加入网卡配置
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
2.7、创建keepalived文件夹
mkdir -p /etc/keepalived
2.8、将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
2.9、添加可执行权限
chmod +x /etc/init.d/keepalived
3. 加入开机启动:
chkconfig --add keepalived #添加时必须保证/etc/init.d/keepalived存在
chkconfig keepalived on
添加完可查询系统服务是否存在:chkconfig --list
4. 启动keepalived
启动:service keepalived start
停止:service keepalived stop
重启:service keepalived restart
5. 配置日志文件
1.将keepalived日志输出到local0:
vi /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
2.在/etc/rsyslog.conf里添加:
local0.* /var/log/keepalived.log
3.重新启动keepalived和rsyslog服务:
service rsyslog restart
service keepalived restart
4. 打开防火墙的通讯地址
iptables -A INPUT -d 224.0.0.18 -j ACCEPT
/etc/rc.d/init.d/iptables save