Nginx系列-反向代理

281 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

到目前为止nginx到文章,已经写了如下内容:

  • 环境搭建
  • location
  • gzip 压缩
  • 日志开启
  • 资源缓存配置

想了解相关基础配置信息的,可以点击下面文章链接去看看:

往期回顾:
Nginx系列-基础模块配置
Nginx系列-资源缓存配置

读完这篇文章你将收获以下内容:

  1. 什么是正向代理
  2. 什么是方向代理
  3. nginx如何配置反向代理

正向代理

下面是百度百科关于正向代理的介绍:

正向代理,意思是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

正向代理,它的典型之处在于是一种最终用户知道并主动使用的代理方式。常见的使用场景是,为在防火墙内的局域网客户端提供访问Internet的能力。听到这可能还是有些抽象,再举个例子,在国内是访问不了Google,但有时候我们又需要借助它去查找些资料,那怎么办呢?假如能够将我们的IP地址变换成能够访问Google的区域IP地址,那问题不就迎刃而解了。OK,这就是VPN的由来,就是为了解决这个事,它充当中转服务,当电脑接入 VPN 后,对外 IP 地址就会变成 VPN 服务器的 公网 IP,我们请求或接受任何数据都会通过这个VPN 服务器然后传入到我们本机。

反向代理

反向代理和正向代理的区别在于,正向代理代理的是客户端,反向代理代理的是服务器。

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率的。

它的具有如下优点:

  1. 提高了内部服务器的安全
  2. 加快了对内部服务器的访问速度
  3. 节约了有限的IP资源

Nginx配置反向代理

案例:将后缀名为api的请求转发到后台服务器

直接上配置信息(提供核心配置信息,其余省略):

 server {
      listen  80;  # 监听的端口
      server_name 	www.hello.com; # 服务器地址或绑定域名
      location ^~/api {		# 匹配前缀为api的请求
      # 代理转发的后端服务器地址
      proxy_pass  http://realserver.com:9530/api/;
      proxy_redirect   				off;
      # 设置发送到后端服务器的请求头
      proxy_set_header 				Host				$host;
      proxy_set_header				X-Real_IP		$remote_addr;
      
      # 代理的连接超时时间
      proxy_connect_timeout		70;
      proxy_send_timeout			90;
      # 代理的读取资源超时时间
      proxy_read_timeout			90;
      proxy_send_lowat				12000;
      
      proxy_buffer_size				4k;
      # 设置缓冲区的大小和数量
      proxy_buffers						4k;
      proxy_busy_buffers_size	64k;
      proxy_temp_file_write_size	64k;
      
      # 指定位置来缓冲对文件系统的大型代理请求
      proxy_temp_path					/var/nginx/proxy_temp;
      
    }

 }

总结

至此便粗略学习了正向代理/反向代理的概念,并简单进行了nginx反向代理配置。

参考文章:

HttpProxy模块-Nginx