首先说说正向代理和反向代理的概念:

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

正向代理:浏览器访问目标网站(浏览器中配置代理服务器) -> 目标网站(google)。

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

反向代理:浏览器访问代理服务器地址 -> 代理服务器接收到请求->转发到目标服务器访问。

1、主要关键配置字段 proxy_pass

server {
    listen       80;
    server_name  localhost;
​
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
​
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location /baidu {
    #我们在这里配置了,如果访问 /baidu,就反向代理到百度
    #实际运用中,可以代理到我们的服务器ip:端口号。如:http://192.168.65.100:9999;
    
        proxy_pass http://www.baidu.com/;
    }

resolve

server
{
    listen 8080;
    server_name xxx.cn;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/xxx.cn;
    resolver 114.114.114.114;
    location / {
           set $testCn xxx.cn;
            proxy_pass http://$testCn;
     }
}

当设置resolve后, nginx将会忽略本身设置的dns,本机的hosts,直接通过resolve的dns服务器动态获取ip,用于转发,只有通过变量设置域名,resolve的dns解析才会生效