反向代理(Reverse Proxy),是指用代理服务器来接受Internet上的连接请求,然后将 请求转发给内网上的上游服务器,并将从上游服务器上得到的结果返回给Internet上的请求连接的客户端,此时代理服务器对外的表现就是一个Web服务器。
Nginx具备高并发高负载能力,因此一般用作前端服务器直接向客户端提供静态文件服务。对于一些复杂业务不适合放在Nginx服务器上的一般用Apache、Tomcat等服务器来处理。此时就需要将Nginx同时配置为静态服务器以及反向代理,不适合Nginx处理的请求就通过反向代理功能转发到上游服务器中处理。
从另一个角度,只有用户的动态请求(不同用户请求结果不同)才会需要反向代理,如果结果一样就是静态资源请求。
当客户端发来HTTP请求时,Nginx并不会立即转发到上游服务器,而是先把用户的请求(包括HTTP包体)完整的接收到Nginx所在服务器的硬盘或内存中,然后再向上游服务器发起连接。
而Squid等代理服务器则是一边接收客户端请求,一边转发到上游服务器。
Nginx方式可以降低上游服务器的负载,降低其并发压力。
1、将上篇搭建的静态服务器改为上游服务器
上游服务器一般是内网服务器。
vim /home/nginx/conf/nginx.conf
修改:
http { server { listen127.0.0.1:8080; }}
2、停止nginx并重启
/home/nginx/sbin/nginx -s stop
/home/nginx/sbin/nginx
此版本为1.16.1
3、用OpenResty搭建反向代理
依据OpenResty® Linux 包界面方式下载、安装OpenResty。
4、修改OpenResty下Nginx配置
vim /usr/local/openresty/nginx/conf/nginx.conf
http { upstream local { # 表示上游服务器地址,将这一批服务器命名为local server 127.0.0.1:8080 # 其中一台服务器地址,可以有很多 } server { sercer_name localhost; listen 80; location / { # 对所有的请求 proxy_pass http://local; # 代理到刚才配置的上游服务中 } }}
5、启动OpenResty下的Nginx
/usr/local/openresty/nginx/sbin/nginx
此时访问ip:80,抓包可以看到请求头是OpenResty返回的。
6、配置缓存服务器\响应服务器
http { upstream local { # 表示上游服务器地址,将这一批服务器命名为local server 127.0.0.1:8080 # 其中一台服务器地址,可以有很多 } server { sercer_name localhost; listen 80; location / { # 对所有的请求 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forward_for; proxy_cache my_cache; proxy_cache_key $host$uri$is_arfs$args; proxy_cache_valid 200 304 302 ld; proxy_pass http://local; # 代理到刚才配置的上游服务中 } }}
如果你看到了这一篇文章,那么证明你已经了解并安装了PROconfig,感谢使用。
在使用过程中,有任何问题都可以通过以上链接找寻答案,或者联系我们。
]]>