由于 CentOS 6.5 默认仓库中没有 Nginx,我们需要添加 EPEL 仓库或从源码编译安装。
添加 EPEL 仓库:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装 Nginx:
yum install nginx -y
启动 Nginx 并设置开机启动:
service nginx start
chkconfig nginx on
安装依赖:
yum install gcc pcre-devel zlib-devel openssl-devel -y
下载并解压 Nginx:
wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
编译安装:
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
创建启动脚本:
vi /etc/init.d/nginx
添加以下内容:
#!/bin/sh
# chkconfig: 2345 85 15
# description: Nginx is a World Wide Web server.
PATH=/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting $DESC: "
$DAEMON
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
$DAEMON -s stop
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
$DAEMON -s reload
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
$DAEMON -s reload
echo "$NAME."
;;
*)
echo "Usage: $NAME {start|stop|restart|reload}" >&2
exit 1
;;
esac
exit 0
设置权限并添加服务:
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
启动 Nginx:
service nginx start
编辑 Nginx 配置文件(通常位于 /usr/local/nginx/conf/nginx.conf
或 /etc/nginx/nginx.conf
):
http {
upstream backend {
server 192.168.1.101:80 weight=5;
server 192.168.1.102:80;
server 192.168.1.103:80 backup;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Nginx 支持多种负载均衡算法:
weight
参数指定权重nginx
upstream backend {
ip_hash;
server 192.168.1.101:80;
server 192.168.1.102:80;
}
nginx
upstream backend {
least_conn;
server 192.168.1.101:80;
server 192.168.1.102:80;
}
Nginx 提供基本的健康检查功能:
upstream backend {
server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
}
max_fails
:允许失败次数fail_timeout
:失败后暂停服务时间upstream backend {
least_conn;
server 192.168.1.101:80 weight=3;
server 192.168.1.102:80;
server 192.168.1.103:80 backup;
keepalive 32;
}
server {
listen 80;
server_name yourdomain.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 超时设置
proxy_connect_timeout 5s;
proxy_send_timeout 10s;
proxy_read_timeout 10s;
# 缓冲设置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
}
}
检查配置文件语法:
nginx -t
重新加载配置:
service nginx reload
测试负载均衡:
curl
多次访问服务器,观察响应来自不同后端netstat
或 ss
命令查看连接分布无法启动 Nginx:
netstat -tulnp | grep 80
tail -f /var/log/nginx/error.log
502 Bad Gateway:
性能问题:
worker_processes
为 CPU 核心数worker_connections
值CentOS 6.5 特定问题:
通过以上步骤,您应该能够在 CentOS 6.5 上成功安装 Nginx 并配置负载均衡功能。如需更高级的功能,可以考虑使用 Nginx Plus 或结合其他工具如 Keepalived 实现高可用。