
本文旨在为用户提供一份详细的 Nginx 和 HAProxy 安装与配置指南,适用于 CentOS 7 系统。通过本文,您将学会如何设置两个 Nginx 网站并使用 HAProxy 进行负载均衡,同时解决可能遇到的常见问题。本文还会补充一些扩展知识,帮助您更好地理解相关技术。
在开始之前,请确保您的系统满足以下条件:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config注:关闭防火墙和 SELinux 是为了简化配置过程,但在生产环境中,请根据实际需求调整安全策略。
cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecacheyum install -y nginxsystemctl start nginx
systemctl enable nginxecho "server1 192.168.192.111" > /usr/share/nginx/html/index.htmlcurl 127.0.0.1输出结果应为:
server1 192.168.192.111echo "server2 192.168.192.112" > /usr/share/nginx/html/index.htmlcurl 127.0.0.1输出结果应为:
server2 192.168.192.112关闭防火墙 selinux
安装所需组件
yum groupinstall -y 'Development Tools' pcre-devel zlib-devel
官网地址:官网地址点击

yum groupinstall -y 'Development Tools'
yum install -y pcre-devel zlib-develtar -zxf haproxy-2.9.9.tar.gz
cd haproxy-2.9.9/make TARGET=linux-glibc && make installmkdir /etc/haproxycp /root/haproxy-2.9.9/addons/ot/test/be/haproxy.cfg /etc/haproxy/vim /etc/haproxy/haproxy.cfg配置内容如下:
vim /etc/haproxy/haproxy.cfg
global
nbthread 1 # 使用的线程数;'1' 表示单线程。
maxconn 5000 # 允许的最大连接数。
hard-stop-after 10s # 在关闭过程中,强制停止 HAProxy 的最长等待时间。
# log localhost:514 local7 debug # 日志配置(已注释)。
# debug # 启用调试模式(已注释)。
stats socket /tmp/haproxy-be.sock mode 666 level admin # 创建用于管理级别统计信息的 Unix 套接字。
defaults
log global # 使用全局日志配置。
mode http # 处理连接的默认模式;此处为 HTTP。
option httplog # 启用 HTTP 请求日志记录。
option dontlognull # 不记录没有数据的连接。
option httpclose # 在每个响应后强制关闭连接。
retries 3 # 尝试连接服务器失败时的重试次数。
maxconn 4000 # 每个进程的最大连接数。
timeout connect 5000 # 等待与服务器建立连接的最长时间(毫秒)。
timeout client 50000 # 客户端侧的最大不活动时间(毫秒)。
timeout server 50000 # 服务器侧的最大不活动时间(毫秒)。
listen stats
mode http # 统计接口使用 HTTP 模式。
bind *:8080 # 将统计接口绑定到所有 IP 地址上的 8080 端口。
stats uri / # 访问统计接口的 URI。
stats admin if TRUE # 允许通过统计接口执行管理级别的命令。
stats refresh 10s # 每 10 秒刷新一次统计信息。
#frontend ot-test-be-frontend
# mode http # 前端使用 HTTP 模式(已注释)。
# default_backend servers-backend # 使用的默认后端(已注释)。
listen servers-backend
bind *:80 # 将后端绑定到所有 IP 地址上的 80 端口。
mode http # 后端使用 HTTP 模式。
server server-1 192.168.180.200:80 # 定义 server-1 及其 IP 和端口。
server server-2 192.168.180.190:80 # 定义 server-2 及其 IP 和端口。以下是关键修改的部分:

cp ~/haproxy-2.9.9/examples/haproxy.init /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
chmod +x /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy/etc/init.d/haproxy start/etc/init.d/haproxy status
/etc/init.d/haproxy: 第 26 行:[: =: 期待一元表达式
Usage: haproxy {start|stop|restart|reload|condrestart|status|check}解决方法:
vim /etc/init.d/haproxy将第 26 行修改为:
[ "$NETWORKING" = "no" ] && exit 0http://<HAProxy_IP>:8080,可以看到 HAProxy 的统计页面。http://<HAProxy_IP>,页面会随机显示:server1 192.168.192.111或
server2 192.168.192.112

修改配置文件
frontend http_front
bind *:80
default_backend servers-backend
backend servers-backend
mode http
server server-1 192.168.192.111:80 check
server server-2 192.168.192.112:80 check
本文详细介绍了如何在 CentOS 7 系统中安装和配置 Nginx 与 HAProxy,并实现负载均衡功能。通过本文的学习,您应该能够搭建一个简单的高可用 Web 服务环境。在实际生产中,请根据需求进一步优化配置,并考虑安全性和性能的提升。
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。