【运维工程师学习八】代理及安装配置Nginx反向代理


代理的模式有三种:正向代理、反向代理、透明代理。在介绍反向代理部署之前先看一下各种模式代理的应用场景。

正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲(缓存)特性减少网络使用率。
在这里插入图片描述
从图中我们可以看出,所谓的正向代理就是代理服务器替代访问方【用户】去访问目标服务器【内容服务器】

一、使用正向代理的主要作用有:

1、访问本无法访问的服务器,你懂的
2、加速访问服务器,客户端到代理服务器快,但到内容服务器慢,而代理服务器到内容服务器快,则实现了加速
3、Cache作用,缓存的意思,代理服务器可以开启缓存,这样客户端下次再次访问可以加速
4、客户端访问授权,可以实施对客户端允许或禁止访问指定服务器的控制
5、隐藏访问者的行踪,内容服务器并不知道访问自己的实际用户,因为代理服务器代替用户去直接与内容服务器进行交互

二、反向代理

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
CDN就是利用反向代理模式,但CDN是一个十分庞大的系统,除了反向代理还需要搭配智能DNS等,本例无意讨论CDN架构,请自行了解。

在这里插入图片描述
正反向代理的程序很多,开源软件中最流行的就是squid。反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。

除了squid,nginx还有很多能实现反向代理的程序。

三、使用反向代理的主要作用有:

1、保护和隐藏原始内容服务器,像上页图中,防火墙只允许代理服务器访问真正的内容服务器
2、负载均衡,当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问内容服务器的时候,让不同的代理服务器去应答不同的用户,然后发送不同用户需要的内容

四、透明代理

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(请求报文),并会传送真实IP,多用于路由器的NAT转发中。透明代理实践的例子就是时下很多公司使用的行为管理软件。
在这里插入图片描述
用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。

五、各种代理的主要区别

在这里插入图片描述
通过前面的介绍、对比,我们得知正向代理、透明代理多数用于企业内部网络,而只有反向代理多用于WEB服务,因此本节将介绍利用nginx程序部署反向代理。

六、Nginx的安装

本例演示中不使用编译安装,将使用epel仓库的编译包进行安装。
演示系统约定:
OS:CentOS7 minimal
Selinux: disable
Firewall: disable
IP:192.168.1.5

1、安装epel源及ntp以保证时间准确

yum install –y epel-release ntp
yum makecache
ntpdate pool.ntp.org

在 centos 8 中, ntp 已经被 chrony 代替。
之前的版本:

yum install -y ntp

centos8:

yum install chrony

修改时区:

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

2、安装nginx

yum install –y nginx

3、启动nginx

systemctl start nginx

在浏览器访问192.168.1.5如右图,表示安装成功。
在这里插入图片描述

七、了解nginx的文件位置

Nginx配置文件全部位于/etc/nginx下

/etc/nginx/               	   # 配置文件目录
nginx.conf	                   # 主配置文件
conf.d          	           # 扩展配置目录,默认为空
default.d      	               # 默认网站的扩展配置目录,默认为空
fastcgi.conf    	           # FastCGI配置文件
mime.types      	           # mime类型定义文件
/var/log/nginx/error.log  	   # 错误日志文件
/var/log/nginx/access.log      # web访问日志文件
/usr/share/nginx/html/         # 默认网站的文件目录

八、了解nginx程序的命令行参数

nginx –h显示相关帮助说明
在这里插入图片描述
上面已经详细说明了各个参数的具体用途。常用的有-V,显示nginx开启的功能;-t当nginx配置后,加该参数检查配置文件是否有语法错误;-s重新配置nginx后,使用-s reload可使配置平滑生效。
输入nginx直接回车可启动nginx,另外还可以使用systemctl来控制。

九、开启nginx反向代理

本测试中指定真正的源服务器为www.wy.cn,即实现当访问192.168.1.5,实际是访问www.wy.cn。配置如下:

/etc/nginx/default.d/中新建一个配置文件,文件名为test.conf

vi / etc/nginx/default.d/test.conf

添加如下内容:

location ~ /*   #/* 表示根目录,亦即是整站跳转到www.wy.cn
{
proxy_pass http://www.163.com;   #声明目标站地址
}  #{}是nginx配置文件分隔符,;是配置内容行结束符

可尝试修改配置文件,将www.163.com替换为www.wy.cn、www.sina.com.cn等感受下。

保存后,reload使用配置生效

nginx –s reload

重新访问http://192.168.1.5,则显示的内容实际为www.wy.cn的内容

十、解读nginx主配置文件

为什么在/etc/nginx/default.d添加test.conf就可以了实现了反向代理效果了?
首先整站反向代理就只要test.conf中的那么几行就可以了,至于为什么在/etc/nginx/default.d目录中添加了就可以了呢?我们来看看nginx主配置文件(/etc/nginx/nginx.conf)
由于配置较多,显示过长,我对配置内容做了一些省略,详见下页……

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
#这部分是全部配置部分,并且加了include,表示还引用了外部配置文件
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #……省略了部分内容
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    #这部分是http配置部分,包括最后的那个大括号},并且加了include,引用外部其它配置文件/etc/nginx/conf.d
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;
        #……
    }    
}
#这部分是server配置部分,即网站信息(开放的端口、主机名、网站根目录等等,以及代理),同时加了include引用default.d目录下的其它配置文件。看到这里应该明白了,为什么在default.d目录下加了test.conf就开启了反向代理吧。

不难看出,通过include能很科学的组织配置文件,比如在http部分再加一个include /etc/nginx/server.d,将所有server的配置文件放在server.d下,实现将所有server的配置文件放在同一个目录下,方便管理。

十一、总结

  1. 本文介绍了三种代理模式:正向代理、反向代理以及透明代理;
  2. 本文介绍了利用nginx实现反向代理;
  3. Nginx还有很多功能,以内页压缩、负载均衡等等这里均没有涉及,请自行了解;
  4. Nginx自带连接数统计功能,本例使用的安装包已开启该功能(如果是编译安装,记得开启),通过配置
  5. http_stub_status_module,可在web中十分方便地查看当前web的连接数。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallFatMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值