一、搭建Nginx服务
Nginx 是俄罗斯人编写的十分轻量级的HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器
1 安装扩展包epel
在安装Nginx之前需要安装epel扩展包,先通过rpm -qi epel-release 查看一下是否安装,通过查看已经安装,如果没有安装就需要通过yum install epel进行安装
通过yum安装Nginx需要有扩展的源epel.repo ,确定有后yum install nginx -y 就开始安装
查看下Nginx版本是1.10.2,这是官方的稳定版本
2 修改配置文件
Nginx的配置文件村村存放在/etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
2.1 server
下图中sever中 80代表的是监听的是80端口,root 的路径/var/share/nginx/html;是网站的根目录,这是去全局的,最后必须用分号结尾
2.2 location
- url 统一资源定位符
http://192.168.1.1:80 能定位到唯一的一个软件
- uri 统一资源占位符
http://192.168.1.1:80/a/b/c.txt
能定位到服务端的c.txt文件
客户端提交请求,最终服务端寻找的就是
/var/share/nginx/html/a/b/c.txt
上网最终就是上网查找文件下载到本地
1 http:// --->sever端基于http给clint发送数据
2 192.168.1.1:80 --->定位到全世界唯一的软件
3 /a/b/c.txt ---> /先找软件的根 root /usr/share/nginx/html
在找根的时候会先找location,没有location会从root寻找
3 启动软件
3.1 启动Nginx服务
第一次启动的时候需要用Start,systemctl start nginx,启动后可以通过systemctl status nginx 查看状态
Nginx启动后,修改配置文件后需要重新启动,用systemctl restart nginx
3.2 通过浏览器访问
先获得服务端的IP地址,ifconfig 得到IP地址是192.168.16.134
在浏览器中输入192.168.16.134不能访问,这是软件防火墙的问题,通过systemctl stop firewall 就能把防火墙关闭,重新输入就能访问
systemctl disable firewalld配置开机关闭防火墙
下面修改index文件,在文件中写入welcome Nginx
3.3 创建一个文件的,通过目录进行访问
重启Nginx在浏览器中
3.4 修改location
在location中添加 根目录和index
将在文件中写入内容
在浏览中输入192.168.16.134/index.html出现403页面,尝试关闭软件防火墙还是不行,通过查找资料关闭内核防火墙,修改/etc/selinux/config 文件,
将SELINUX=enforcing改为SELINUX=disabled
重启机器
在浏览中输入192.168.16.134/index.html
二、Nginx反向代理
在Nginx官网中找到Using nginx as HTTP load balancer,意思是使用Nginx作为负载均衡
将一台机器配置为Nginx服务器,当有访问的时候,由这台服务器负责分配流量到不同的服务器
下面通过搭建一台Nginx服务器,反向代理3台服务器
具体的环境是在VMware中操作,同过软件的克隆功能复制出3台web服务器,分别是web1、web2、web3.原来的主机做负载均衡
通过xshell5进行远程连接
修改3个web服务器的主页
分别修改** /var/www/html/index.html中的内容为web1、web2、web3,用systemctl restart nginx**重启nginx服务,在浏览器中分别输入相应的IP地址就能验验证修改的内容。
我们要做的是通过访问反向代理主机就能访问web123的内容
修改反向代理主机的配置文件
nginx做负载均衡的时候有3中调度算法
- 轮询
- 最小连接
- IP hash
1 基于轮询的方式调度三台web
在反向代理主机的配置文件中添加
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
这里面这要是修改三处,一是名字myapp1,在实际的测试中修改成了Pythonwebtest,二是下面的域名修改成web1、web2、web3的IP地址,三是在server中添加proxy_pass http://pythonwebtest;
实验结果:
在浏览器中访问反向代理主机的IP地址,不断刷新显示的内容依次是web1、web2、web3
2 hash的方式调用三台web
IP hash会将访问的IP地址固定到一台web服务器,作用就是会话保持
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
同样的将myapp1修改成pythonwebtest
实验结果就是当访问反向代理主机的时候一直刷新返回的都是web1
3 基于权重的方式调度三台web
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
具体的实现就是在轮询的基础上再相应的IP后面添加weight并赋值
实验结果:
当访问反向代理主机的时候不断刷新,前3次返回的是web1,之后依次返回web2、web3,然后是3次web1,依次往复循环
三、nfs服务
NFS 是Network File System的缩写,即网络文件系统。
1 安装nfs
yum install rpcbind nfs-utils -y
2 配置
配置文件在/etc/exports
/share 192.168.16.0/24(rw,sync,fsid=0)
把IP地址设置成相同的子网16,这样就都能访问了,这里通过设置反向代理服务器上的文件作为共享文件
3 修改share目录的权限
将share目录的权限修改成 chmod -R o+w /share
4 先为rpcbind和nfs做开机启动
systemctl enable nfs-server.service
systemctl enable rpcbind.service
5 启动
必须先启动rpcbind服务
systemctl start rpcbind.service
systemctl start nfs-server.service
6 确认NFS服务器启动成功
exportfs
出现share目录证明启动成功
showmount -e #默认查看自己共享的服务
showmount -a #显示已经与客户端连接上的目录信息
现在还没有服务器连接
7客户端安装并开启服务
yum install rpcbind nfs-utils -y
systemctl enable rpcbind.service && systemctl start rpcbind.service
在web1、web2、web3中进行挂载
mount -t nfs 192.168.16.134:/share /var/www/html/
-t nfs 是指定文件的类型
此时,就可以在浏览器中访问192.168.16.134/share.txt
web1、web2、web3 此时共享/var/www/html/
四、源码安装nginx
1 安装环境
从GitHub下载nginx的源码包并解压,在机器上安装开发工具
2 制作Makefile文件
./configure --prefix=/usr/local/nginx
3 编译并安装
make && make install
4设置环境变量
vim /etc/profile.d/http.sh
PATH=/usr/local/nginx/sbin:$PATH
5 启动
systemctl start nginx
在浏览器中输入主机的IP地址就能访问了