WEB集群-代理与负载均衡

综合架构-技术点串线:www.processon.com/view/link/6...

访问密码:oldboylidao996

Ngx处理用户请求流程:www.processon.com/view/link/6...

LNMP架构处理流程:www.processon.com/view/link/6...

一、LNMP排错

排除法:

Linux:防火墙,selinux.

Nginx:检查配置,处理流程检查. 测试ngx.

PHP:处理动态请求. 测试:ngx+php

MySQL: 测试php+数据库

背景:ngx部署wordpress(php)站点报错了,说说排查流程.

1、检查ngx是否正常运行.

perl 复制代码
检查端口
ss -lntup | grep nginx
检查进程
ps -ef | grep nginx
检查配置
nginx -t
站点目录下创建test.html写入内容,使用curl访问
curl IP:/80

2、ngx是否把动态页面转发php,php是否解析.

php 复制代码
站点目录下
testinfo.php
<?php
phpinfo();
?>
测试完成,务必删除,否则网站信息泄漏.

3、检查php连接数据库是否正常(测试用户名和密码)

ini 复制代码
#推荐方式
mysql -u用户 -p密码 -h 数据库的ip
show databases;

二、复杂均衡和代理

1、代理概述

  • 代理: 外卖/中介/中间商. 用户无法直接做某些事情,通过中介进行处理.这个中介就是代理.
  • 用户 代理 WEB节点,后面只有一个节点,一般使用的是ngx代理功能即可,后面如果是集群需要使用ngx负载均衡功能.

2、代理分类

代理分类 方向 应用
正向代理 用户(服务器)->代理->外部(某网站) 服务器通过代理实现共享上网/访问某个网站
反向代理 用户(app/浏览器)->代理->网站服务器(WEB) 给网站设置个统一入口,后面是网站集群(可以使用负载均衡功能)

1)正向代理

2)反向代理

3、案例:反向代理案例

1)后端web服务器

1、编辑ngx配置文件

ini 复制代码
[root@backup conf.d]# cat /etc/nginx/conf.d/shishu.com.conf 
server{
 listen 80;
 server_name shishu.com;
 root /app/code/shishu;
 location / {
 index index.html; 
}
}

2、检验语法nginx -t

3、创建对应目录和文件,并且更改所有者

bash 复制代码
mkdir -p /app/code/shishu
touch index.html
echo "This is the interface after redirection" > /app/code/shishu/index.html 
chown -R nginx.nginx /app/code/shishu
​
mkdir -p /app/code/html
touch index.html
echo "index.html" > /app/code/html/index.html 
chown -R nginx.nginx /app/code/html

4、重启加载ngx服务

复制代码
systemctl restart nginx

5、本地测试

ruby 复制代码
curl -v -H Host:shishu.com 10.0.0.13

2)前端负载均衡服务器

1、编辑ngx配置文件

ini 复制代码
[root@clb conf.d]# cat /etc/nginx/conf.d/shishu.com.conf 
server{
 listen 80;
 server_name shishu.com;
 root /app/code/shishu;
 location / {
 proxy_pass http://10.0.0.13:80;
 proxy_set_header Host $http_host; 
}
}

2、检验语法nginx -t

3、重启加载ngx服务

复制代码
systemctl restart nginx

4、测试代理

ruby 复制代码
curl -v -H Host:shishu.com 10.0.0.12

3)抓包查看

可以看出进行的两次跳转

4、web有多个虚拟主机故障案例

故障现象:

  • web服务器有多个虚拟主机的时候,通过代理访问web出现异常.访问的不是我们想要的虚拟主机·

原因:

  • 代理向后端web节点发出请求的时候,请求头中的Host,被修改成ip地址形式了
  • 相当于代理通过ip地址访问web服务器,只显示默认虚拟主机

解决:

  • 方向:修改代理->web的请求头
  • proxy_set_header Host $http_host;

解决的原理:

  • 代理->web发出请求的时候,修改请求头中的Host部分,设置为用户请求的域名

模拟:

注释proxy_set_header Host $http_host;,模拟访问到web服务器的默认html。

proxy ngx模块

proxy_pass :传球,请求传递给指定的节点

proxy_set_header : 修改请求头,代理->后端节点

5、web记录真实IP

现象:在代理服务器01是客户端,在web服务器上lb是客户端。

在代理服务器增加改ngx的location , proxy_set_header X-Forwarded-For $remote_addr; 。最后在web服务器上记录了真实的ip地址。

6、负载均衡

  • upstream模块的upstream指令
  • 创建1个池塘(分组),存放主机
  • upstream创建池塘,proxy_pass数据丢向池塘

对LB配置文件进行更改

ini 复制代码
[root@clb conf.d]# cat /etc/nginx/conf.d/shishu.com.conf 
upstream cfg_pools { 
 server 10.0.0.7:80;
 server 10.0.0.8:80;
 }
​
server{
 listen 80;
 server_name shishu.com;
 root /app/code/shishu;
 location / {
 proxy_pass http://cfg_pools;
 proxy_set_header Host $http_host; 
 proxy_set_header X-Forwarded-For $remote_addr;
}
}

遗留:day47 and 48

总的来说,反向代理主要关注于隐藏服务器的内部结构、提供安全性和缓存等功能,而负载均衡则主要关注于平衡服务器的负载、提高系统的性能和可用性。虽然它们在某些方面有重叠,但是它们的主要功能和使用场景是不同的。

相关推荐
卡卡_罗特13 小时前
前端项目部署nginx代理
前端·vue.js·nginx
~黄夫人~1 天前
Nginx Ubuntu vs CentOS 常用命令对照表---详解笔记
运维·笔记·学习·nginx·ubuntu·centos
weixin_449568702 天前
访问Nginx 前端页面,接口报502 Bad Gateway
前端·nginx·gateway
百思可瑞教育2 天前
Nginx代理缓存机制深度解析:从原理到最佳实践
java·nginx·缓存·北京百思可瑞教育·百思可瑞教育
m0_474606782 天前
Nginx + Certbot配置 HTTPS / SSL 证书(简化版已测试)
nginx·https·ssl
Narutolxy2 天前
DMZ层Nginx TLS 终止与安全接入配置实战20250829
redis·nginx·安全
大喵桑丶3 天前
Nginx配置学习及多应用场景配置示例
运维·学习·nginx
LoongKK3 天前
2024-06-13-debian12安装Mariadb-Galera-Cluster+Nginx+Keepalived高可用多主集群
数据库·nginx·mariadb
像素之间3 天前
nginx的诞生背景、核心优势、与 Apache 的对比
运维·学习·nginx
卓码软件测评3 天前
【第三方网站运行环境测试:服务器配置(如Nginx/Apache)的WEB安全测试重点】
运维·服务器·前端·网络协议·nginx·web安全·apache