一. Nginx虚拟主机
1.1 虚拟主机的作用
虚拟主机提供了在同一台服务器上运行多个网站的功能。
1.2 虚拟主机的三种模式
·基于多域名方式配置虚拟主机
·基于多端口配置虚拟主机
·基于多ip配置虚拟主机
基于多域名的虚拟主机是最常见一种虚拟主机
只需配置DNS服务器,将每个主机名映射到正确的地址,然后配置Nginx服务器,令其识别不同的主机名就可以了
基于多端口的虚拟主机,可以使用同一个ip,通过访问不同的端口来访问
基于多Ip的虚拟主机可以通过添加多个网卡或者在一块物理网卡上绑定多个ip地址来实现
Ps:如果没有特殊要求,最好还是使用基于多域名的虚拟主机
1.2.1 多域名配置虚拟主机
配置hosts文件
[root@master ~]#cat etc/hosts
192.168.193.100 www.master.com
创建虚拟主机配置文件
#在http模块中添加:
Include usr/local/nginx/conf/vshost/*.conf
#创建主机配置文件
mkdir -p/usr/local/nginx/conf/vhost
vim/usr/local/nginx/conf/vhost/www.jfedu.com.conf
server {
listen 80;
server_name www.jfedu.com;
location {
root usr/local/nginx/html/jfedu;
index index.html index.htm;
}
}
vim/usr/local/nginx/conf/vhost/www.jf.com.conf
server {
listen 80;
server_name www.jf.com;
location {
root usr/local/nginx/html/jf;
index index.html index.htm;
}
}
#域名解析
[root@master ~]#vim etc/hosts
#添加
192.168.193.100www.jfedu.com
192.168.193.100 www.jf.com
#访问测试
[root@master ~]#curl www.jfedu.com
this is jfedupage
[root@master ~]#curl www.jf.com
this is jf page
[root@master ~]#
1.2.2 多端口配置虚拟主机
[root@master ~]#vim usr/local/nginx/conf/vhost/www.jfedu.com.conf
server {
listen 8080;#修改端口
server_name www.jfedu.com;
location {
root /usr/local/nginx/html/jfedu;
index index.html index.htm;
}
}
#重启服务访问测试
[root@master ~]#curl www.jfedu.com:8080
this is jfedupage
[root@master ~]#curl www.jf.com:80
this is jf page
1.2.3 配置多IP虚拟主机
#添加网卡
[root@master ~]#cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:1}
[root@master ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33:1
#修改
NAME="ens33:1"
DEVICE="ens33:1"
IPADDR="192.168.193.101"
#重启网卡
[root@master ~]#systemctl restart network
#修改配置文件
[root@master ~]#vim /usr/local/nginx/conf/vhost/www.jfedu.com.conf
server {
listen 192.168.193.101:80;
server_name www.jfedu.com;
location / {
root/usr/local/nginx/html/jfedu;
index index.html index.htm;
}
}
#域名解析修改配置文件
[root@master ~]#vim /etc/hosts
192.168.193.101 www.jfedu.com
#重启nginx
[root@master ~]#nginx -s reload
#访问测试
[root@master ~]#curl 192.168.193.101
this is jfedupage
[root@master ~]#curl 192.168.193.100
this is jf page
二. Nginx反向代理
2.1 概念
反向代理是nginx的一个重要功能,在编译安装时会默认编译该模块。在配置文件中主要是配置proxy_pass指令。
代理服务器接收客户端的请求,然后把请求代理给后端真是服务器进行处理,然后再将服务器的响应结果返给客户端。
2.2 反向代理作用
与正向代理(正向代理主要是代理客户端的请求)相反,反向代理主要是代理服务器服务返回的数据,所以它的作用主要是以下两点:
可以房子内部服务器被恶意攻击(内部服务器对客户端不可见)
为负载均衡和动静分离提供技术支持
2.3 反向代理语法:
Syntax:proxy_pass url;
Default: -
Context:location, if in location,limit_except
代理服务器的协议,可以支持http与https
地址可以指定为域名或者IP地址,以及可选端口。
例如:
proxy_pass http://192.168.193.100;
prpxy_pass http:// 192.168.193.100:8080;
prpxy_pass http://localhost:9000/uri/;
2.4 Nginx代理缓存服务器实例
代理服务器:192.168.193.102
后端服务器:192.168.193.100
#代理服务器配置:
http {
…
#设置缓存
proxy_cache_path/data/nginx/cache max_size=10g levels=1:2 keys_zone=nginx_cache:10minactive=60m use_temp_path=off;
location / {
proxy_pass http://192.168.193.100;
proxy_set_headerHost $host;
proxy_set_header X_Real_IP $remote_addr;
proxy_cachenginx_cache;
proxy_cache_key $host$uri$is_args;
proxy_cache_valid 200 301 302 1d;
}
…
}
#创建缓存目录
mkdir /data/nginx/cache
#重启nginx服务,访问测试:
#访问代理服务器192.168.193.102
返回后端服务器192.168.193.100网页,实现了代理功能

#同时查看192.168.193.102服务器下缓存目录,发现已经存在缓存文件
[root@node2 ~]# tree /data/nginx/cache/
/data/nginx/cache/
└── 7
└── 9b
└──e4510baac2ac82e888672c580c05a9b7
2 directories, 1 file
#此时将192.168.193.100后端服务停止,前端页面依然可以访问,说明缓存生效。
三. Nginx负载均衡
3.1 负载均衡目的
将前端超高并发访问转发至后端多台服务器进行处理,解决单个节点压力过大,赵成WEB服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务的问题。
3.2 工作原理
负载均衡分为四层负载均衡和七层负载均衡。
四层负载均衡是工作在七层协议的第四层-传输层,主要工作是转发。
七层负载均衡是工作在七层协议的第七层-应用层,主要工作是代理。
3.3 配置七层负载均衡
前端服务器:192.168.193.102
后端服务器1:192.168.193.100
后端服务器2: 192.168.193.101
前端服务器主要配置upstream和proxy_pass;
upstream 主要是配置均衡池和调度方法。
proxy_pass 主要是配置代理服务器ip或服务器组的名字。
proxy_set_header主要是配置转发给后端服务器的Host和前端客户端真是IP
3.4 配置前端nginx
#在http指令块下配置upstream指令块
upstream web {
server 192.168.193.100;
server 192.168.193.101;
}
#在location指令块配置proxy_pass
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://web;
}
}
#访问测试:
[root@node2~]# curl 192.168.193.102
this is192.168.193.100 page
[root@node2 ~]#curl 192.168.193.102
this is192.168.193.101 page
3.5 将本地镜像软件包发布并实现两台服务器均衡
#将本地镜像挂在到100和101发布目录下
[root@master ~]#mount /dev/cdrom /usr/local/nginx/html/jfedu/
[root@master ~]#mount /dev/cdrom /usr/local/nginx/html/jf
#开启目录展示vim nginx.conf
autoindex on;
#访问测试

#由于采用虚拟主机方式,现将www.jf.com.conf配置注销
[root@master ~]#mv /usr/local/nginx/conf/vhost/www.jf.com.conf{,.bak}
重启nginx
[root@master ~]#/usr/local/nginx/sbin/nginx -s reload
仍然可以访问,此时只有一台101提供后端服务
不论你在什么时候开始,重要的是开始之后就不要停止!
--end--
了解更多请关注吧

点个小花花,让他们知道你“在看”我




