nginx负载均衡-基于多域名的负载均衡(二)

embedded/2025/1/15 0:37:37/

在这里插入图片描述

注意:
(1) 做负载均衡技术至少需要三台服务器:一台独立的负载均衡器,两台web服务器做集群
(2) keeplived(高可用)+nginx负载均衡) 可以实现多域名对应一个VIP,并且访问不同域名,显示不同主页,可行,已测

一、nginx分别代理后端web1 和 web2的三台虚拟主机

1、web1(nginx-10.0.0.7)配置基于域名的虚拟主机(以下配置了3个虚拟主机)

[root@Oldboy extra]# cat www.conf 
server {listen        80;server_name  www.etiantian.org;location / {root   html/www;              #这个地方指向nginx安装目录的html/www/目录下index  index.html index.htm;}
}
[root@Oldboy extra]# cat bbs.conf 
server {listen        80;server_name  bbs.etiantian.org; location / {root   html/bbs;index  index.php  index.html index.htm;}
}
[root@Oldboy extra]# cat blog.conf 
server {listen        80;server_name  blog.etiantian.org;location / {root     html/blog;index    index.php;
}location ~ .*\.(php|php5)?$ {root html/blog;fastcgi_pass  127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}
}

2、web2(apache-10.0.0.8)配置基于域名的虚拟主机(以下配置了3个虚拟主机)

[root@Oldboy extra]# egrep -v "#|^$" httpd-vhosts.conf NameVirtualHost *:80
<VirtualHost *:80>ServerAdmin oldboy@oldboyedu.comDocumentRoot "/application/apache2.2.31/htdocs/www"ServerName   www.etiantian.orgServerAlias etiantian.orgErrorLog "/app/logs/www-error_log"CustomLog "/app/logs/www-access_log" common
</VirtualHost>
<VirtualHost *:80>ServerAdmin oldboy@oldboyedu.comDocumentRoot "/application/apache2.2.31/htdocs/bbs"ServerName   bbs.etiantian.orgErrorLog "/app/logs/bbs-error_log"CustomLog "/app/logs/bbs-access_log" common
</VirtualHost>
<VirtualHost *:80>ServerAdmin oldboy@oldboyedu.comDocumentRoot "/application/apache2.2.31/htdocs/blog"ServerName   blog.etiantian.orgErrorLog "/app/logs/blog-error_log"CustomLog "/app/logs/blog-access_log" common
</VirtualHost>

3、负载均衡器(LB-nginx-10.0.0.6)配置反向代理

[root@Oldboy conf]# cat nginx.conf
worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;upstream web_pool {                                             地址池server 10.0.0.7:80  weight=1;server 10.0.0.8:80  weight=1;
}server {listen       80;server_name  www.etiantian.org  bbs.etiantian.org  blog.etiantian.org;#ssl on;#ssl_certificate /usr/local/nginx/conf/33iq.crt;#ssl_certificate_key /usr/local/nginx/conf/33iq_nopass.key;location / {index  index.html index.htm;proxy_pass http://web_pool;                                                   反向代理到地址池proxy_set_header Host  $host;                                                将请求头信息也一起反代给后端的服务器proxy_set_header X-Forwarded-For $remote_addr;               将客户端的真实ip映射到后端的web服务器中}}}解释:
当客户端分别访问 www.etiantian.org 、 bbs.etiantian.org、 blog.etiantian.org 时,nginx会带着这些主机头请求后端web集群,web服务器中的虚拟主机会自动识别nginx请求的主机头,并回复nginx请求,nginx再将web端的回复,交给客户端。也可以代理单台服务器:
location / {index  index.html index.htm;proxy_pass http://172.16.100.100;                                                   proxy_set_header Host  $host;                                                proxy_set_header X-Forwarded-For $remote_addr;           }

4、修改web端日志访问ip

默认情况下web端日志记录的访问ip是负载均衡器的ip,所以需要修改为真实客户端ip
(1) 负载均衡器(LB)配置
server {listen       80;server_name  blog.etiantian.org;location / {index  index.html index.htm;proxy_pass http://blog_pool;                                          代理blog动态页面proxy_set_header Host  $host;proxy_set_header X-Forwarded-For $remote_addr;      负载均衡器开启ip转发,将客户端ip映射到web服务器}}
(2) web1端修改日志格式来接收客户端的真实ip(nginx主配置文件)
cat  nginx.conflog_format  main  '$http_x_forwarded_for  $remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
(3) web2端修改日志格式来接收客户端的真实ip (apache主配置文件)
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b"  common

http://www.ppmy.cn/embedded/153973.html

相关文章

No.1|Godot|俄罗斯方块复刻|棋盘和初始方块的设置

删掉基础图标新建assets、scenes、scripts文件夹 俄罗斯方块的每种方块都是由四个小方块组成的&#xff0c;很适合放在网格地图中 比如网格地图是宽10列&#xff0c;高20行 要实现网格的对齐和下落 Node2D节点 新建一个Node2D 添加2个TileMapLayer 一个命名为Board&…

SVG图表

1、时序图 英文 #mermaid-svg-OyLuBTPnpbW9XDOB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-icon{fill:#552222;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-text{fill:#552222;stroke:#55…

软件测试之单元测试总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、何为单测 测试有黑盒测试和白盒测试之分&#xff0c;黑盒测试顾名思义就是我们不了解盒子的内部结构&#xff0c;我们通过文档或者对该功能的理解&#xff0c…

IDEA Maven构建时报错:无效的目标发行版17

报错分析 报错原因&#xff1a;Maven 构建时&#xff0c;Java 版本配置不匹配 我安装的JDK版本是1.8&#xff0c;但由于种种原因&#xff0c;Maven构建时指定了 Java 17 作为目标发行版&#xff0c;从而导致错误 解决方案 首先&#xff0c;java -version&#xff0c;查看环…

Git | git stash命令详解

关注&#xff1a;CodingTechWork 引言 在日常开发中&#xff0c;使用Git版本控制系统时&#xff0c;可能会遇到需要暂时中断当前工作&#xff0c;去处理其他任务的情况。这时&#xff0c;如果直接切换分支&#xff0c;可能会导致当前的修改未提交而丢失或需要暂时保存修改的状…

http和https有哪些不同

http和https有哪些不同 1.数据传输的安全性&#xff1a;http非加密&#xff0c;https加密 2.端口号&#xff1a;http默认80端口&#xff0c;https默认443端口 3.性能&#xff1a;http基于tcp三次握手建立连接&#xff0c;https在tcp三次握手后还有TLS协议的四次握手确认加密…

SQLynx 数据库管理平台 3.6.0 全新发布:全面支持华为数据库和ClickHouse,代码提示更智能!

SQLynx 数据库管理平台 3.6.0 版本盛大发布&#xff1a;重磅更新引领数据库管理新风尚&#xff01; SQLynx 数据库管理平台近日迎来了翘首以盼的3.6.0版本更新&#xff0c;此次更新不仅深度整合了对华为GaussDB与ClickHouse数据库的卓越支持&#xff0c;还全面革新了代码提示功…

面对移动安全挑战,应用加固是不可忽视的防线

随着网络攻击变得越来越复杂和隐蔽&#xff0c;企业在移动应用安全方面面临着越来越大的压力。无论是金融应用、零售平台&#xff0c;还是社交和娱乐应用&#xff0c;都在不断遭遇着来自黑客和恶意软件的攻击。在这种日益严峻的形势下&#xff0c;应用加固&#xff08;App Shie…