本方案使用Nginx作为反向代理和负载均衡器,为多人测试环境提供高效、稳定的访问入口,实现请求分发和资源优化利用。
服务器要求:
软件要求:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
):
http {
upstream test_environment {
# 配置负载均衡策略
# least_conn; # 最少连接策略
# ip_hash; # IP哈希策略(保持会话)
# 添加应用服务器
server 192.168.1.101:8080; # 测试环境服务器1
server 192.168.1.102:8080; # 测试环境服务器2
server 192.168.1.103:8080; # 测试环境服务器3
}
server {
listen 80;
server_name test.yourdomain.com;
location / {
proxy_pass http://test_environment;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 可选:WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
根据测试需求选择合适的负载均衡策略:
nginx
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 weight=2;
server 192.168.1.103:8080 weight=1;
nginx
ip_hash;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
nginx
least_conn;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
添加健康检查确保只有正常运行的服务器接收请求:
upstream test_environment {
server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.102:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.103:8080 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name user1.test.yourdomain.com;
location / {
proxy_pass http://192.168.1.101:8080;
}
}
server {
listen 80;
server_name user2.test.yourdomain.com;
location / {
proxy_pass http://192.168.1.102:8080;
}
}
location /user1/ {
proxy_pass http://192.168.1.101:8080/;
}
location /user2/ {
proxy_pass http://192.168.1.102:8080/;
}
map $cookie_testenv $backend {
default http://test_environment;
"user1" http://192.168.1.101:8080;
"user2" http://192.168.1.102:8080;
}
server {
location / {
proxy_pass $backend;
}
}
检查Nginx配置:
sudo nginx -t
重启Nginx:
sudo systemctl restart nginx
验证负载均衡:
bash
tail -f /var/log/nginx/access.log
SSL加密:为测试环境添加HTTPS支持
server {
listen 443 ssl;
server_name test.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://test_environment;
}
}
缓存配置:为静态资源添加缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
add_header Cache-Control "public";
}
带宽限制:防止单个测试用户占用过多资源
location / {
limit_rate 1m; # 限制每个连接1MB/s
proxy_pass http://test_environment;
}
访问控制:限制测试环境访问IP
location / {
allow 192.168.1.0/24;
deny all;
proxy_pass http://test_environment;
}
502 Bad Gateway错误:
nginx
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
负载不均衡:
WebSocket连接问题:
通过以上配置,您可以快速搭建一个支持多人同时测试的稳定环境,并能根据实际需求灵活调整负载策略和访问规则。