关于Nginx,除了作为普通的web服务器使用外,还经常被用作网络代理服务器;解决网络访问受限的问题。日常讨论最多的就是“正向代理”和“反向代理”。很多人往往不明白什么是“正向代理”,什么是“反向代理”。它们之间有什么区别?其实Nginx只有代理转发的功能。人们之所以常说正向代理或反向代理,是因为网站的视角不同。我们可以想象一下,在80年代和90年代,在政府大院负责收发信件的老人,把老人收发信件的动作想象成Nginx对请求的转发功能。老头把内部信件往外发的时候,我们定义为正向代理,而老头把从外面往里发来的信件转发给里面每个具体的人的时候,就叫反向代理。但对于老者来说,他们都是代理人,完成的动作都是一样的。Nginx也是一样,所有的网络请求转发指令都是一样的。Nginx代理使用说明对比1.将内部请求转发到外部。upstreambaidu{serverwww.baidu.com;}server{listen8100;server_nameproxy_baidu;location/{proxy_passhttp://baidu;}}访问proxy_ip:8100会通过代理服务器发送请求。1.将外部请求转发到内部upstreamtest-api{ip_hash;server192.168.32.12:80;server192.168.32.13:80;}server{listen8080;location/{proxy_passhttp://test-api;}}这个paragraph配置会将外部对Nginx的请求转发到内部的192.168.32.12和192.168.32.13服务器。结论通过对比两种配置,你会发现对于Nginx,无论是正向代理还是反向代理,指令都是一样的。所以对于Nginx来说,都是代理,不分优劣。最后附上一张示意图,进一步说明Nginx网络代理的作用。
