Nginx 资源分离场景实践
主机规划
1).根据 iphone.安卓,pc跳转不同的页面环境的规划。
主机名 | 主机角色 | 外网ip |
---|---|---|
lb01 | 负载均衡 | 10.0.0.5 |
web01 | 提供pc端页面 | 10.0.0.7 |
web02 | 提供移动端页面(Mobile) | 10.0.0.8 |
配置后端web
web01,web02操作如下
1)修改配置文件
[root@web01 /etc/nginx/conf.d]# vim 01www.conf
server {
listen 80;
server_name www.oldboy.com;
access_log /var/log/nginx/access_www.log main;
location / {
root /app/www;
index index.php index.html index.htm;
}
}
- 检查语法后重启
nginx -t
systemctl reload nginx
web01操作如下
1)创建站点目录和首页文件
[root@web01 ~]# mkdir -p /app/www
[root@web01 ~]# echo 'this is pc website' >/app/www/index.html
[root@web01 ~]# cat /app/www/index.html
this is pc website
web02操作如下
[root@web01 ~]# mkdir -p /app/www
[root@web01 ~]# echo 'this is Mobile website' >/app/www/index.html
[root@web01 ~]# cat /app/www/index.html
this is Mobile website
lb01操作如下
1)curl命令检查配置结果。如下说明配置正常
[root@lb01 ~]# curl 10.0.0.7
this is pc website
[root@lb01 ~]# curl 10.0.0.8
this is Mobile website
配置负载均衡lb01
lb01操作如下
1)修改配置文件
[root@lb01 ~]# vim /etc/nginx/nginx.conf
....................省略若干
http {
...................省略若干
upstream default { ##创建一个存放pc端页面的池塘
server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
}
upstream mobile { ##创建一个存放移动端页面的池塘
server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
}
server { ###一个server相当于一个网站
listen 80; ##监听80端口默认
server_name www.oldboy.com; ##可以使用什么域名访问
location / { ###用来匹配uri
if ($http_user_agent ~* "Android|Iphone") { ##如果客户端浏览器是android 或iphone就做下面的事
proxy_pass http://mobile; ##就把请求丢给pc页面的·池塘
}
proxy_pass http://default; ##默认把请求丢给pc页面池塘
proxy_set_header Host $host; ##修改负载均衡向web发送的请求头信息,
proxy_set_header X-Forwarded-For $remote_addr; ##让web节点日志中记录用户真实ip.
2)检查语法后重启
[root@lb01 ~]# nginx -t
[root@lb01 ~]# systemctl restart nginx
curl命令测试
-A 修改客户端浏览器信息
[root@lb01 ~]# curl 10.0.0.5
this is pc website
[root@lb01 ~]# curl -A Android 10.0.0.5
this is Mobile website
[root@lb01 ~]# curl -A Iphone 10.0.0.5
this is Mobile website
浏览器测试
Nginx动静分离实战
Nginx动静分离后的好处
- 动静分离中的好处:动静分离后,即使动态服务不可用,但静态资源不会受到影响。最重要的就是可以增加服务器支持的访问量。
Nginx动静分离场景实践
动静分离环境规划
主机名 | 服务 | 功能 | 外网地址 |
---|---|---|---|
lb01 | 负载均衡 | nginx | 10.0.0.5 |
web01 | web | /upload上传 | 10.0.0.7 |
web02 | web | /static静态资源 | 10.0.0.7 |
web03 | web | 动态 默认 | 10.0.0.7 |
配置文件配置
web01web02 web03 服务器配置文件修改为如下
1)修改配置文件
[root@web01 /etc/nginx/conf.d]# vim 01www.conf
server {
listen 80;
server_name www.oldboy.com;
access_log /var/log/nginx/access_www.log main;
location / {
root /app/www;
index index.php index.html index.htm;
}
}
nginx -t
systemctl reload nginx
web01操作如下
1)准备目录以及静态资源
mkdir -p /app/www/upload/
echo this is upload >/app/www/upload/guoav.html
web02操作如下
mkdir -p /app/www/static/
echo this is static >/app/www/static/guoav.html
web03操作如下
mkdir -p /app/www/
echo this is default >/app/www/guoav.html
lb01操作如下
1)测试web配置是否ok
[root@lb01 /etc/nginx]# curl 10.0.0.7/upload/guoav.html
this is upload
[root@lb01 /etc/nginx]# curl 10.0.0.8/static/guoav.html
this is static
[root@lb01 /etc/nginx]# curl 10.0.0.9/guoav.html
this is default
2)修改负载均衡配置文件
[root@lb01 ~]# vim /etc/nginx/nginx.conf
............省略若干
http {
............省略若干
upstream upload { ##创建一个处理上传请求的池塘
server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
}
upstream static { ##创建一个处理静态资源请求的池塘
server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
}
upstream default { ##创建一个处理静态请求的池塘(默认)
server 10.0.0.9:80 weight=1 max_fails=3 fail_timeout=10s;
}
# include /etc/nginx/conf.d/*.conf;
server { ###一个server模块相对于一个网站
listen 80; ###监听80端口
server_name www.oldboy.com; ##可以使用什么域名进行访问
location /upload { ##匹配请求uri中带/upload的
proxy_pass http://upload; ##将将请求扔给upload池塘
proxy_set_header Host $host; ##修改负载均衡发给web的请求头信息
proxy_set_header X-Forwarded-For $remote_addr; ##让web日志中显示客户端真实ip
}
location /static { ##匹配请求uri中带/static的
proxy_pass http://static; ##将将请求扔给static池塘
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
location / { ##匹配默认。其他都没有匹配这个
proxy_pass http://default; ##将将请求扔给default池塘
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
3)浏览器进行测试
Nginx高可用架构
keepalived高可用概述
1)什么是高可用
- 什么是高可用双击热备,一般指2台机器启动着相同的业务系统,当有一台机器down机了,另一台服务器能快速的接管,对于访问的用户是无感之的。
2)高可用使用场景 - 业务系统需要保证7x24小时不down 机,作为业务来说随时都可以用,让你的业务系统更顽强。