共计 2298 个字符,预计需要花费 6 分钟才能阅读完成。
以下是用于配置 nginx 负载平衡的简单示例文件。主要功能是:
用户访问 http://www.linuxidc.com 并将其负载均衡到四台服务器:192.168.5.2:80、92.168.1.3:80、192.168.5.4:80、192.168.1.5:80
用户访问 http://m.linuxidc.com 并将其负载均衡到 192.168.5.7 服务器的端口 8080、8081 和 8082。
user www www;
worker_processes 10;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include conf/mime.types;
default_type application/octet-stream;
keepalive_timeout 120;
tcp_nodelay on;
upstream www.linuxidc.com {
server 192.168.5.2:80;
server 192.168.5.3:80;
server 192.168.5.4:80;
server 192.168.5.5:80;
}
upstream m.linuxidc.com {
server 192.168.5.7:8080;
server 192.168.5.7:8081;
server 192.168.5.7:8082;
}
server
{
listen 80;
server_name www.linuxidc.com;
location / {
proxy_pass http://www.linuxidc.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
log_format www_linuxidc_com‘$remote_addr – $remote_user [$time_local] $request‘
‘”$status”$body_bytes_sent“$http_referer”‘
‘”$http_user_agent”“$http_x_forwarded_for”‘;
access_log /data1/logs/www.log www_linuxidc_com;
}
server
{
listen 80;
server_name m.linuxidc.com;
location / {
proxy_pass http://m.linuxidc.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
log_format linuxidc_linuxidc_com‘$remote_addr – $remote_user [$time_local] $request‘
‘”$status”$body_bytes_sent“$http_referer”‘
‘”$http_user_agent”“$http_x_forwarded_for”‘;
access_log /data1/logs/linuxidc.log blog_linuxidc_com;
}
}
这里使用两个主要模块:
1. HTTP 负载平衡模块(HTTP 上游),解释了一些字段:
- server:指定后端服务器的名称和一些参数。您可以使用域名,IP,端口或 Unix 套接字。如果指定为域名,则首先解析为 IP。
- upstream:此字段设置一组服务器。该字段可以作为单独的实体放置在 proxy_pass 和 fastcgi_pass 指令中。它们可以是侦听不同端口的服务器,也可以是侦听 TCP 和 Unix 套接字的服务器。
2. HTTP 代理模块(HTTP Proxy)
该模块可以将请求转发到其他服务器。
- proxy_pass:此命令设置代理服务器的地址和映射的 URI。该地址可以采用主机名或 IP 加端口号的形式。
- proxy_set_header:此伪指令允许您将字段重新定义或添加到发送到代理服务器的请求标头中。该值可以是文本,变量或它们的组合。
: