很早就知道nginx具有强悍的高并发高负载的处理能力,当然也常用作代理服务器,将不适合nginx处理的请求转发给Apache或者Tomcat等其他服务器处理。如何将nginx作为代理服务器?
nginx服务的安装不再赘述,见上一篇博文 centos源码安装nginx
1、在nginx的配置文件nginx.conf的http模块中配置upstream
upstream yesuhuangsi {
server 10.210.241.45:8080 weight=5;
server 10.209.79.75:8080 weight=1;
}
server指定的服务器不支持域名+hosts的形式;
weight表示该服务器的转发权重,默认为1,权重越大,请求的概率越大;
fail_timeout与max_fails配合使用,表示fail_timeout时间段内,若转发失败的次数超过max_fails,则认为该服务器暂不可用,用于优化反向代理功能,max_fails默认1,设置为0表示不检查失败次数,fail_timeout默认为10s;
down表示所在的服务器永久下线,只有在使用ip_hash配置项时才有效;
backup表示所在服务器是备份服务器,只有在所有非备份服务器都失效时,才会向所在的服务器转发请求,在使用ip_hash配置项时无效;
2、配置server
server {
listen 80;
root /data1/;
server_name yesuhuangsi.com;
access_log /data1/www/logs/yesuhuangsi.com-access_log main;
error_log /data1/www/logs/yesuhuangsi.com-error_log;
location / {
proxy_pass http://yesuhuangsi;
}
}
当请求 yesuhuangsi.com时,代理服务器就会根据权重将请求转发到设置的45:8080和75:8080两台服务器上
如果日志中需要记录请求的真实域名和ip,则需要在设置proxy_pass时,同时设置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;