先前的一篇博客(nginx安装配置与测试)中已经对nginx的安装配置以及常用命令做了总结,本文总结一下Nginx的各种应用,并给出简单的配置及测试:

(1) nginx正向代理
正向代理:客户端访问某个目标网站时,可能无法访问,就可以使用代理服务器访问,由代理服务器请求目标网站,将响应返回给客户端。正向代理的时候,客户端要进行设置才能够使用代理服务器,客户端知道访问的是代理服务器。正向代理的情况下,如果代理服务服务器不提供资料给服务端,则客户信息对目标服务器是隐藏的。nginx的一个正向代理服务器的简单实例如下:
server {
        resolver 8.8.8.8;

        listen 127.0.1:82;  

        location / {
                proxy_pass $scheme://$http_host$request_uri;
                     
        } 
}
配置生效后可以在浏览器中设置服务器的地址和端口,也就是上述配置的listen地址和端口,然后访问某个目标网站的时候,就会通过代理来访问,比如访问http://www.baidu.com/。nginx正向代理服务器不支持https.
也可以通过curl命令来测试,如下:
curl  --proxy 127.0.0.1:82 http://www.baidu.com/

(2)nginx反向代理
反向代理:反向代理的情况下,客户端发送请求给代理服务器,代理服务器选择多个目标服务器的一个转发请求(这事反向代理服务器也是一个负载均衡器),得到响应后给到客户端。反向代理,对于客户端而言并不需要特殊的设置,实际上客户端并不知道从哪个目标服务器得到的响应,在客户端看来,代理服务器就像是返回响应的服务器。反向代理的一个简单例子如下,这里是一种特殊情况只有一个服务器。
    server {
        listen       80;
        server_name  localhost;


        location / {
            root   html;
            index  index.html index.htm;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


    # proxy server
    server {
        listen       81;
        server_name  localhost;


        location / {
            proxy_pass http://localhost:80;
        }
    }

测试如下:

nginx的各种应用总结与测试

(3) nginx服务器
nginx可以作为服务器,尤其是作为静态网页服务器,或者动静结合的静态响应服务器。实际上在默认配置下,我们通过locahost域名访问nginx/html/index.html,nginx机器就是作为一个服务器。nnginx可以对不同的访问集合进行不同的处理,可以选本地的内容作为响应,也可以作为代理服务器请求远端的服务器再给到服务器响应。对于不同的请求,nginx作出不同的响应,一个实例如下:
 server {
        listen       84;
        server_name  localhost;


        location / {
            root   html;
            index  index.html index.htm;
        }


        location ~*.html$ {
            root   html;
            index  dmo.html;
        }
    }

测试如下:

nginx的各种应用总结与测试

(8) 负载均衡器
部署nginx的机器可以作为负载均衡器,在反向代理的情况,有多个目标服务器,因此需要负载均衡器,负载均衡器根据请求决定访问哪一个目标服务器,得到响应给到代理服务器,再返回给客户端。一个负载均衡器实例如下:
    upstream balancer {
        server localhost:84;
        server localhost:80;
    }
    server {
        listen       85;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;


        location / {
            proxy_pass http://balancer;
        }
    }
上述配置是默认负载均衡方式,按照时间顺序分配到服务器,如果有端口挂了,则不发送到改端口。nginx自带三中负载均衡方式:
(a)默认:按照时间顺序分配到服务器
upstream balancer {
        server localhost:84;
        server localhost:80;
    }
(b)权重方式
upstream balancer {
        server localhost:84 weight 8;
        server localhost:80 weight 2;
    }

(c)ip_hash方式:按照请求IP的hash结果来决定访问哪个服务器,这样固定请求IP访问固定的机器,在需要保存session时候,这种方式很有用。
upstream balancer {
        ip_hash;
        server localhost:84 weight 8;
        server localhost:80 weight 2;
    }
另外第三方还有两种方式:
(d)fair:那个服务器响应快,发送到那个服务器
upstream balancer {
        fair;
        server localhost:84 weight 8;
        server localhost:80 weight 2;
    }
(e)usl_hash:根据url的hash值来决定访问哪个服务器。


相关文章:

  • 2022-12-23
  • 2022-01-08
  • 2022-02-13
  • 2022-02-03
  • 2021-05-06
  • 2022-12-23
  • 2021-11-21
  • 2021-09-28
猜你喜欢
  • 2022-12-23
  • 2022-02-09
  • 2021-05-20
  • 2021-08-09
  • 2021-06-04
  • 2021-08-18
  • 2021-11-17
相关资源
相似解决方案