什么是代理呢?比如我们现在有一个需求,国内现在已经把谷歌禁掉了,访问不了谷歌,怎么办呢?美国可以访问,香港可以访问,那我们现在就可以做一个代理,我们可以实现通过一个代理去访问百度,去访问谷歌,去访问任何一个网站。

比较典型的一个例子,在新疆那边,是访问不到百度网盘的,那这个时候我们就可以用一个代理去实现。代理如何去配置?

## 编写代理配置文件

[root@wy ~]# cd /usr/local/nginx/conf/vhosts/

[root@wy vhosts]# vim proxy.conf

server {

      listen 80;

      server_name www.baidu.com;

     location / {           # 百度的ip

        proxy_pass   http://119.75.217.109/;  

       # proxy_set_header Host $host;

      }

}

解释说明:

以百度为例,先在本地上ping一下百度,看一下ip,然后填写在proxy_pass

## 检查并重新加载

[root@wy vhosts]# /usr/local/nginx/sbin/nginx -t

[root@wy vhosts]# /usr/local/nginx/sbin/nginx -s reload

## 测试

[root@wy vhosts]# curl -x127.0.0.1:80 www.baidu.com

Nginx配置——代理详解_nginx代理详解

解释说明:

把百度的ip指向咱们本机来,然后去访问百度


nginx也可以实现多台机器,也就是你指定后端的ip可以是多个;这种多个情况下,完全可以实现负载均衡那如何配置负载均衡,多个机器去访问百度呢?


## 首先查看百度解析到了哪里

[root@wy vhosts]# dig www.baidu.com

;; ANSWER SECTION:

www.baidu.com.          5       IN      CNAME   www.a.shifen.com.

www.a.shifen.com.       5       IN      A       119.75.218.70

www.a.shifen.com.       5       IN      A       119.75.217.109

解释说明:

使用dig的目的,是找到百度其他的地址,除了上面配置的119.75.217.109,还有一个119.75.218.70

## 多个ip去访问,去代理

[root@wy vhosts]# vim proxy.conf

upstream bbb{

       server 119.75.218.70:80 weight=100;

       server 119.75.217.109;

}

server {

      listen 80;

      server_name www.baidu.com;

     location / {

        proxy_pass   http://bbb/;

        proxy_set_header Host $host;

      }

}

解释说明:

server 119.75.218.70:80 weight=100;   端口可写可不写;weight 权重;在这可写可不写

配置多个ip时,要加上proxy_set_header Host $host;  否则会 502

proxy_pass 写 upstream自定义的名字

## 检查并重新加载

[root@wy vhosts]# /usr/local/nginx/sbin/nginx -t

[root@wy vhosts]# /usr/local/nginx/sbin/nginx -s reload

## 测试

[root@wy vhosts]# curl -x127.0.0.1:80 www.baidu.com