Nginx反向代理详解(定义作用及配置实例)

Nginx反向代理详解(定义作用及配置实例)-mikechen
Nginx的反向代理是常被用到的,在介绍反向代理之前,我们一起先来了解一下正向代理@mikechen

正向代理

正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。

例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。

来看个示意图:

Nginx反向代理详解(定义作用及配置实例)-mikechen

我们可以通过这种方式,访问原来无法访问的资源,比如: Google。

反向代理

反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。

来看个示意图:

Nginx反向代理详解(定义作用及配置实例)-mikechen

由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

反向代理作用

反向代理有以下作用:

1.保护网站安全

因为任何来自Internet的请求都必须先经过代理服务器。

2.加速Web请求

提高访问速度:当经过首次链接之后,代理服务器会将此次数据缓存下来,当下次用户来访问时,可以优先在缓存中查找,提高了访问速度。

3.实现负载均衡

当一台服务器访问量短时间不能承受时就会发生奔溃,所以可以按照需求使用多台服务器组成一个服务器集群来平均分担数据访问的压力,给用户带来良好的体验。

目前市面上,主流的负载均衡方案,硬件设备有F5,软件方案有四层负载均衡的LVS,七层负载均衡的Nginx等。

Nginx配置文件

在配置Nginx反向代理之前,我们要熟知它的配置文件,因为反向代理会涉及到其中的具体配置。

Nginx配置文件所在位置:nginx/conf/nginx.conf。

1.Nginx配置结构

main        # 全局配置,对全局生效
├── events  # 配置影响 nginx 服务器或与用户的网络连接
├── http    # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
│   ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
│   ├── server   # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
│   ├── server
│   │   ├── location  # server 块可以包含多个 location 块,location 指令用于匹配 uri
│   │   ├── location
│   │   └── ...
│   └── ...
└── ...

2.Nginx配置含义

Nginx反向代理详解(定义作用及配置实例)-mikechen

  • 全局块main:nginx 的全局配置,对全局生效;
  • events:配置影响 nginx 服务器或与用户的网络连接;
  • http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
  • server:配置虚拟主机的相关参数,一个 http 中可以有多个 server;
  • location:配置请求的路由,以及各种页面的处理情况;
  • upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

 

Nginx反向代理配置

1.目标

访问http://ip,访问到的是Tomcat的主页面http://ip:8080。

2.环境

Nginx+JDK8+Tomcat

3. 配置文件

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        #server_name localhost;
        server_name  192.168.71.167;
        location / {
            root   html;
            #添加下面的一句话
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

 

4.重新加载Nginx配置文件

/usr/local/nginx/sbin/nginx -s reload

 

5.测试

访问:http://192.168.71.167/,看到的是Tomcat的首页。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法