准备:
一台RHEL5.5虚拟机 作为nginx代理端,同时装有apache,端口8080;一台WINDOWS2003服务器,装有apache;使用nginx来代理本机和server 2003 的apche服务。
nginx安装目录/opt/nginx,日志目录/opt/logs(logs目录必须事先建立,否则会报错)。
1、下载最新稳定版nginx与pcre包
wget
wget
存放于tmp目录下
2、设置nginx运行用户www
#groupadd www
#useradd -g www nginx
#passwd nginx
3、安装pcre和nginx
#cd /tmp
#tar zxvf pcre-8.13.tar.gz
#cd pcre-8.13
#./configure
#make && make install
#cd /tmp
#tar zxvf nginx-1.0.5.tar.gz
#cd nginx-1.0.5
#./configure --prefix=/opt/nginx --user=nginx --group=www --with-http_ssl_module --with-http_stub_status_module
#make && make install
--prefix 安装路径 --user和--group是运行用户和组 --with-http_ssl_module 开启ssl模块支持https协议 --with-http_stub_status_module 开启服务器状态(server status)页面
详细的编译选项请看这里
nginx默认使用80端口,因此服务器如果有其他程序占用80端口,请改为其他端口。
4、修改nginx配置文件
我修改的配置文件如下
- user nginx www;
- worker_processes 1;
- error_log /opt/logs/error.log;
- pid /opt/logs/nginx.pid;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-steam;
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
- access_log /opt/logs/access.log main;
- keepalive_timeout 65;
- upstream myweb {
- server 192.168.1.93:8080 weight=3;
- server 192.168.1.101:80 weight=1;
- }
- server {
- listen 80;
- server_name 192.168.1.93;
- location / {
- proxy_pass
- }
- }
- }
user nginx www; 运行nginx的用户和组
worker_processes 进程数 与CPU核数保持一致
error_log 错误日志的位置
pid nginx运行时的进程号
events:
worker_connections 并发连接数
http:
access_log 访问日志
log_format 日志格式
keepalive_timeout 客户端连接失效时间
upstream 负载均衡配置(下面{}内容表示upstream内选项)
{server 负载均衡所要负载的服务器列表,weight表示权值,权值越大访问到的几率越大,配置文件中192.168.1.93的访问几率是192.168.1.101的三倍}
server 虚拟主机(下面{}内容表示server内选项)
{listen 监听端口 即nginx的访问端口
server_name 主机名 这里可以写域名或者IP地址
location 配置目录权限
location下的proxy_pass 反向代理 将访问转发到后台负载均衡服务器
}
这样简单的负载均衡就配置好了
5、测试
首先启动两台服务器的apache服务
启动nginx服务 /opt/nginx/sbin/nginx
访问192.168.1.93 返回192.168.1.93:8080的几率是192.168.1.101的三倍
我将两台apche服务器主页设置为不一样的,已用于测试 如下图: