您的位置:首页 > 运维架构 > 反向代理

nginx实现反向代理

2015-12-15 20:33 507 查看
很早就知道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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: