架构总览
Nginx反向代理与负载均衡配置
http {
upstream backend {
server 192.168.1.2:8000 weight=1 max_fails=3 fail_timeout=30s;
server 192.168.1.3:8000 weight=1 max_fails=3 fail_timeout=30s;
# server 192.168.1.4:8000 backup; # 可选:备用节点
}
server {
listen 80;
server_name example.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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
上述做法适用于 ThinkPHP 6 等多实例部署,简单可靠、易于横向扩展。有状态问题的处理
// config/cache.php
return [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'select' => 0,
'prefix' => 'tp6_',
];
// 将 session.type 设为 redis 并指向同一 Redis
数据库读写分离与主从
// config/database.php
return [
'default' => 'mysql_write',
'connections' => [
'mysql_write' => [
'type' => 'mysql',
'hostname' => 'master.db',
'database' => 'app',
'username' => 'root',
'password' => '',
],
'mysql_read' => [
'type' => 'mysql',
'hostname' => 'slave1.db',
'database' => 'app',
'username' => 'root',
'password' => '',
],
],
];
读写分离能显著提升并发读能力,配合主从复制保障数据一致性与可用性。部署与验证
ab -n 10000 -c 100 http://example.com/
压测后核对各后端访问日志,确认请求已按策略分发。