浅谈nginx反向代理问题

对正向代理和反向代理的概念理解:正向代理,我是这样认为的,正向代理就好比我们想上网,然后要通过这个代理服务器我们才能访问特定的网络,正向代理的服务器是和我们的局域网即客户端在一起的;反向代理,我们要访问服务器,然后代理服务器将我们的请求发给在他结点下面的服务器,然后代理服务器将收集到的信息发给我们,所以我们感觉代理服务器就是自己的服务器一样,其中反向代理服务器是和对端服务器部署在一起的。


最近在研究nginx如何做反向代理并且负载均衡的问题,其中小白我很纠结于nginx配置文件上面的root目录到底怎么配置,因为我想模拟的是nginx单独装在一台服务器,然后通过nginx代理下面的服务器结点,所以觉得这种情况Nginx不用配置本地目录root,后来做实验发觉我的猜想是对的,下面说说我进行的实验:

首先说明我的实验环境Centos6.5虚拟机,地址是192.168.10.132,然后我的局域网里面有两个外网的服务器都是210开头的,如下图,你的两台210服务器必须都搭建了相同的网站,并且与上面的192.168.10.132能互相访问,这里在192.168.10.132和210服务器之间是隔着防火墙设备的,在拓扑图中忽略了中间设备

                                      

1安装nginx,这个网上很多教程,这里就不说了,我是主要参考菜鸟教程里面的linux nginx安装以及配置,大家如果想安装和配置的话可以去上面看看教程。

2修改nginx.conf文件(重点),打开Nginx安装目录下的nginx.conf文件,因为我的nginx安装在/usr/local/nginx下面的,所以就用命令vi /usr/local/nginx/conf/nginx.conf打开

               

我按照上图修改了上面配置文件的内容,画红色的是我修改的内容,我在http{}里面加了一个upstream负载均衡器myserver,设置了weight权值,weight越大被访问到的几率越高,同时也起到了反向代理这两台210的服务器的作用,在server下面将nginx默认的本地目录root注释掉,加了一个Location模块,起到了负载调度的作用,proxy_pass是负载均衡组,要和上面的upstream名字相同都为myserver,下面的proxy_next_upstream定义了故障转移策略,如果发生502,503等错误,会将请求转发到另外一台服务器,include包含进proxy.conf,这个文件是安装nginx默认存在的,与nginx.conf在同一目录下

注意:如果是nginx不是用于负载均衡,只是用作分发的作用的话,上述就不需要添加upstream模块,只需要添加不同虚拟主机的server模块,然后在里面添加不同的server_name 和proxy_pass(这里proxy_pass是对应主机的URL入口,如http://127.0.0.1:8080或者http://127.0.0.1:8888),也可以把不同虚拟主机写成不同的配置文件(如www_baidu_com.conf和www_google_com.conf),然后在配置文件里面添加server模块并放到一个文件夹下,接着在nginx_conf中把上面配置文件include进去

3/usr/local/nginx/sbin/nginx -s reload重新加载配置文件

输入http://192.168.10.132测试正确显示权值大的服务器,大功告成!


我在测试的时候遇到了一些问题,有些网站的图片和格式都无法正常显示,所以在nginx.conf文件里面的几个location模块加上了如下配置

                     

分别在css模块和gif图片模块中加入了proxy_pass http://myserver;再/usr/local/nginx/bin/nginx -s reload重新加载一下配置文件就可以正常访问了

还有一点,我用的ie浏览器测试,要清理一下ie浏览器的缓存,不然的话你会发觉怎么修改weight的值也是在访问同一台服务器。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值