ChianXu 发表于 2011-12-22 08:54

使用nginx为windows下web服务器做反向代理服务器

<DIV><STRONG>版权声明:</STRONG>原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://luwenju.blog.51cto.com/620835/349823 <BR><BR>  引言:最近公司有台<EM>服务器</EM>遭受DDOS攻击,流量在70M以上,由于<EM>服务器</EM>硬件配置较高所以不需要DDOS硬件防火墙。但我们要知道,IDC机房是肯定不允许这种流量一直处于这么高的,因为没法具体知道后面陆续攻击的流量会有多大,如果流量过大就会导致整个IDC网络瘫痪。我们都知道北方的数据中心和南方的数据中心从带宽出口上来讲南方多数机房完全有能力扛得住DDOS攻击,东莞的电信机房就不错。有朋友说过面对这种攻击可以在南方电信在放一台<EM>服务器</EM>,然后做个反向代理;令我不解的是倘若再在南方放一台<EM>服务器</EM>,然后在南方电信<EM>服务器</EM>上做反向代理的话北方的用户访问速度肯定会很慢(南方机房多为电信单线,北京的多为双线或BGP线路)。好了,我们言归正传,不管用反向代理是怎么去实现,首先我们要解决的是<EM>如何搭建</EM>一台反向代理<EM>服务器</EM>,免得临时抱佛脚。 <BR><BR>  首先我们来看理解一下什么是反向代理,如下图:当客户机向站点发出请求时,请求将转到代理<EM>服务器</EM>,然后然后代理<EM>服务器</EM>将请求转发给内部网络上的<EM>服务器</EM>,并将从<EM>服务器</EM>上得到的结果返回给Internet上请求连接的客户,对于访问<EM>服务器</EM>的用户来讲,此时的代理<EM>服务器</EM>对外就表现为一台<EM>服务器</EM>;我们还可以在反向代理<EM>服务器</EM>上加上一些策略,这样就对<EM>web服务器</EM>进行了一种安全保护,即使用户想入侵网站,也无法到达<EM>web服务器</EM>;反向代理<EM>服务器</EM>后端还可以放置多台<EM>web服务器</EM>,从而可以减轻网站压力,起到集群作用 <BR><BR>  <IMG height=372 src="http://img1.51cto.comhttp://blog.chinaunix.net/attachment/201007/15/620835_1279160923WCL2.png" TYPE="audio/mpeg"> <BR><BR>  我们都知道Nginx是一款非常不错的程序,其最大的优点就是能承载高并发连接,这次我们就用Nginx来做一台反向代理<EM>服务器</EM> <BR><BR>  <STRONG>环境描述:</STRONG>反向代理<EM>服务器</EM>为Linux系统,安装有Nginx;<EM>web服务器</EM>为windows系统,装有IIS <BR><BR>  <IMG height=244 src="http://img1.51cto.comhttp://blog.chinaunix.net/attachment/201007/15/620835_1279160927MujZ.png" TYPE="audio/mpeg"> <BR><BR>  首先我们在Nginx上设置反向代理,修改Nginx配置文件,将如下部分删除 <BR><BR>  <IMG height=391 src="http://img1.51cto.comhttp://blog.chinaunix.net/attachment/201007/15/620835_1279160931dCFz.png" TYPE="audio/mpeg"> <BR><BR>  删除完成后添加内容如下: server name 在真实环境中需要设置域名,因为我们实际访问网站很少用IP,proxy_pass 为<EM>web服务器</EM>的地址,如<EM>web服务器</EM>的网站用的是8080端口,那么我们的 proxy_pass 的格式就是 <BR><BR>  server <BR><BR>  { <BR><BR>  listen 80; <BR><BR>  server_name 192.168.1.20; //反向代理<EM>服务器</EM>IP <BR><BR>  location / { <BR><BR>  proxy_pass http://192.168.1.10; //<EM>web服务器</EM>IP <BR><BR>  proxy_redirect off; <BR><BR>  proxy_set_header X-Real-IP $remote_addr; <BR><BR>  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; <BR><BR>  } <BR><BR>  #error_page 404 /404.html; <BR><BR>  <IMG height=309 src="http://img1.51cto.comhttp://blog.chinaunix.net/attachment/201007/15/620835_1279160934AFDB.png" TYPE="audio/mpeg"> <BR><BR>  设置完成后执行/usr/local/nginx/sbin/nginx -t 检查配置是否正常,如果显示:the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful 则正常,否则按错误提示进行修改。检查配置文件无误后杀死Nginx进程,然后重新启动Nginx。这时候客户端访问192.168.1.20这台<EM>服务器</EM>得到的就是192.168.1.10<EM>服务器</EM>上面的内容了。 <BR><BR>  如下图,用户在访问192.168.1.20时,192.168.1.10这台<EM>服务器</EM>的IIS记录了访问日志,显示的均为192.168.1.20访问的,而不是客户端 <BR><BR>  <IMG height=254 src="http://img1.51cto.comhttp://blog.chinaunix.net/attachment/201007/15/620835_1279160940Pzxc.jpg" TYPE="audio/mpeg"> <BR><BR>  本文出自“陆文举” 博客,请务必保留此出处http://luwenju.blog.51cto.com/620835/349823 </DIV>
页: [1]
查看完整版本: 使用nginx为windows下web服务器做反向代理服务器