天天看点

Linux服务搭建篇:Nginx反向代理原理与案例详解

作者:云计算练习生

一、什么是正向代理

举个栗子:

我们在校外、公司外,是访问不到学校、公司的内网的,但是我们想要访问内网资源时,会用到VPN。而一般内网会存在一个VPN服务器,我们使用VPN其实就是让内网的VPN服务器代替我们去进行访问(VPN服务器位于内网是可以访问内网资源的)。这其实就是一种正向代理,通过内网VPN服务器代理客户端进行请求。

正向代理: 如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。下面是正向代理的原理图。

由于工作环境原因,日常工作只能局限于单位的局域网,如果想要访问互联网,怎么办呢?这就需要用到正向代理。本人经常用正向代理来进行上网。

Linux服务搭建篇:Nginx反向代理原理与案例详解

二、什么是反向代理

反向代理: 看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

Linux服务搭建篇:Nginx反向代理原理与案例详解

正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果实在服务器用,我们用户无感知,就是反向代理。

三、实验环境搭建

3.1 实验环境

这里准备了三台虚拟机来做这个案例,一个节点安装Nginx,其他两个节点安装Tomcat,通过Nginx服务做反向代理,访问tomcat

操作系统版本 IP地址 角色
Centos7.6 192.168.88.10 Nginx,tomcat
Centos7.6 192.168.88.20 Tomcat1
Centos7.6 192.168.88.30 Tomcat2
Linux服务搭建篇:Nginx反向代理原理与案例详解

服务器需要开放端口,或者直接关闭防火墙,云服务器的话建议开端口,不要关防火墙

3.2 在192.168.88.10节点安装Nginx服务

添加nginx yum源

Linux服务搭建篇:Nginx反向代理原理与案例详解
Linux服务搭建篇:Nginx反向代理原理与案例详解

建立新的yum缓存

Linux服务搭建篇:Nginx反向代理原理与案例详解

查看一下有没有可以安装的nginx

Linux服务搭建篇:Nginx反向代理原理与案例详解

使用yum安装nginx

Linux服务搭建篇:Nginx反向代理原理与案例详解

安装完成,启动nginx服务

Linux服务搭建篇:Nginx反向代理原理与案例详解
Linux服务搭建篇:Nginx反向代理原理与案例详解

完成安装!!!

3.3 Nginx配置文件

在学习 Nginx 之前,我们要熟知它的配置文件。毕竟,我们下面需要做的所有配置(反向代理、负载均衡、动静分离等),都是基于它的配置文件。

Nginx 默认的配置文件是在安装目录下的 conf 目录下,后续对 Nginx 的使用基本上都是对此配置文件进行相应的修改。完整的配置文件,可以看一下文章最后。修改过nginx.conf配置文件,记得要重启Nginx服务

配置文件中有很多#号,该符号表示注释内容,去掉所有以 # 开头的段落,精简之后的配置文件内容如下(PS:其实注释掉的地方,都是一些功能的使用代码,需要用到的时候,取消注释即可):

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;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

去掉注释信息后,可以将 nginx.conf 配置文件分为三部分:

第一部分:全局块

worker_processes 1;

从配置文件开始到 events 块之间的内容,主要会设置一些影响 Nginx 服务器整体运行的配置指令,主要包括:配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

上面这行 worker_processes 配置,这是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

第二部分:events 块

events {

worker_connections 1024;

}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:http 块

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

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;

}

}

这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、动静分离、负载均衡都是在这部分中配置

四、反向代理如何配置

4.1 反向代理实例一

在192.168.88.10节点安装tomcat服务

直接使用yum安装,centos默认yum源就有tomcat

yum install -y tomcat

Linux服务搭建篇:Nginx反向代理原理与案例详解

安装默认浏览器管理界面 yum install -y tomcat-webapps tomcat-admin-webapps

Linux服务搭建篇:Nginx反向代理原理与案例详解

启动tomcat,并设置开机自启动

Linux服务搭建篇:Nginx反向代理原理与案例详解

访问tomcat主页

Linux服务搭建篇:Nginx反向代理原理与案例详解

开始配置反向代理案例一

案例一仅在一个节点上完成,分别安装nginx和tomcat,使用nginx做代理,真正的服务部署在tomcat上。

找到nginx的配置文件,添加以下内容,注意格式:

server {

listen 80;

server_name 192.168.88.10;

location / {

proxy_pass http://127.0.0.1:8080;

}

}

Linux服务搭建篇:Nginx反向代理原理与案例详解

添加之后重启nginx,让配置文件生效

systemctl restart nginx

Linux服务搭建篇:Nginx反向代理原理与案例详解

然后我们再次访问192.168.88.10的80端口,可以看到已经跳转到tomcat服务了,这样一个简单的反向代理就配置完成了

Linux服务搭建篇:Nginx反向代理原理与案例详解

4.2 反向代理案例二

这个相对高级一点,使用3个节点,在192.168.88.10节点配置nginx,实现从192.168.88.10节点跳转到192.168.88.20和192.168.88.30节点的tomcat。

192.168.88.10节点的nginx在上面的案例已经安装完成,这里就不赘述了,安装其他两个节点的tomcat,安装过程和案例一相同

yum install -y tomcat

yum install -y tomcat-webapps tomcat-admin-webapps

192.168.88.20节点的tomcat

Linux服务搭建篇:Nginx反向代理原理与案例详解

192.168.88.30节点tomcat

Linux服务搭建篇:Nginx反向代理原理与案例详解

修改一下两个节点的tomcat主页文件,做一下区分

Tomcat主页文件位置(yum安装情况)/var/lib/tomcat/webapps/ROOT/index.jsp

在主页文件随意加一个标记即可,两个节点做法一样,修改之后重启tomcat

Linux服务搭建篇:Nginx反向代理原理与案例详解

4.3 开始配置反向代理

编辑/etc/nginx/nginx.conf添加以下内容

vi /etc/nginx/nginx.conf

Linux服务搭建篇:Nginx反向代理原理与案例详解

完成后重启nginx服务

Linux服务搭建篇:Nginx反向代理原理与案例详解

访问代理服务器

Linux服务搭建篇:Nginx反向代理原理与案例详解

刷新一下页面再看看

Linux服务搭建篇:Nginx反向代理原理与案例详解

尝试down掉其中一个tomcat

Linux服务搭建篇:Nginx反向代理原理与案例详解

再次访问代理服务器

Linux服务搭建篇:Nginx反向代理原理与案例详解

现在就只有一台tomcat服务了,无论怎么刷新都只能访问192.168.88.20节点的tomcat,nginx反向代理案例到此结束!!!有不对的地方希望不吝赐教,欢迎在评论区留言,分享你的看法。

继续阅读