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

news2024/11/28 12:36:31

【运维工程师学习八】代理

    • 正向代理
    • 一、使用正向代理的主要作用有:
    • 二、反向代理
    • 三、使用反向代理的主要作用有:
    • 四、透明代理
    • 五、各种代理的主要区别
    • 六、Nginx的安装
    • 七、了解nginx的文件位置
    • 八、了解nginx程序的命令行参数
    • 九、开启nginx反向代理
    • 十、解读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的连接数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

变频谐振耐压试验装置产品概述及特点

一、产品概述 KDXZ-II 75kVA/75kV串联谐振耐压试验装置主要针10kV电缆及以下电力主变压器、母线开关等所有电气主设备的交流耐压试验设计制造。电抗器采用多只分开设计,既可满足高电压、小电流的设备试验条件要求,又能满足象10kV电缆这样的低电压的交流…

机器学习——SVM核函数

核函数这块,原理理解起来,相对比较简单 但还是会有一些不太理解的地方 对于非线性可分的数据而言,在当前维度,直接使用SVM有分不出的情况 那么就可以从当前维度,直接升到更高维度,进行计算。 例如原本数…

pytest fixture 高级使用

一、fixture中调用fixture 举例: 输出: 说明:登录fixture 作为参数传递到登出方法中,登录方法的返回值就可以被登出方法使用 二、在fixture中多参数的传递(通过被调用函数传参) 举例: 输出&a…

我的5年创作纪念日

CSDN的5周年来信 机缘 初心是什么?初心就是自己最初成为创作者的动力和目标。作为一个程序员,我对编程充满了热情和执着。我在实战项目中积累了丰富的经验,并希望能将这些经验分享给更多的人。通过写博客,我可以记录下日常学习的…

来的真快:微信小程序必须要备案,否则下架

我是卢松松,点点上面的头像,欢迎关注我哦! 随着上面的一声令下(工信部要求所有APP、小程序进行备案),各大互联网大厂都开始实施具体政策了。来的可真快啊! 首先来的就是微信公众号,它是跟进政策是最快的了。微信公众…

搭建一个自己的文档网站

目录 简介 快速上手 配置 首页 组件Demo案例 简介 有时候我们可能很好奇,像elementUi或者vue3他们的文档网站是怎么写的,其实写vue文档网站的技术,有两个:一个是vuePress,一个是vitePress。从名字上可以看出来&#…

百度chatgpt内测版

搜索AI伙伴 申请到了百度的chatgpt: 完整的窗口布局: 三个哲学问题: 灵感中心: 请做一副画,一个渔夫,冬天,下着大雪,在船上为了一家的生计在钓鱼,远处的山上也都是白雪&a…

系列七、RocketMQ如何保证顺序消费消息

一、概述 所谓顺序消费指的是可以按照消息的发送顺序来进行消费。例如一笔订单产生了3条消息,即下订单》减库存》增加订单,消费时要按照顺序消费才有意义,要不然就乱套了(PS:你总不能订单还没下,就开始减库…

备战金九银十之 5分钟带你掌握 Linux 的三种搜索方式

1.find 命令 find 命令是用来在给定的目录下查找符合给定条件的文件 语法格式:find [查找起始路径] [查找条件] [处理动作] (1)根据名称查找:find [查找起始路径] -name 文件名 或者 find [查找起始路径] -iname 文件名 -name …

超低功耗在智能门锁行业的应用

1. 名词解释 在本体上以电子方式识别、处理人体生物特征信息、电子信息、网络通讯信息等并控制机械执行机构实施启闭的门锁”叫电子智能门锁。通俗地理解,智能门锁是电子信息技术与机械技术相结合的全新的锁具品类,是在传统机械锁基础上升级改进的&…

C++学习| MFC简单入门

前言:因为接手了CMFC的程序,所以需要对MFC编程方面有所了解。 C之MFC简单入门 MFC相关的概念MFCWIN32QT MFC项目基本操作MFC项目创建MFC项目文件解读界面和代码数据交互——加法器 MFC相关的概念 MFC MFC(Microsoft Foundation Classes微软…

【独立版】多商家+供应链云仓系统源码

详情介绍【独立版】多商家供应链云仓系统源码

刑侦科技前沿:IP地址定位技术打击网络犯罪

刑事侦查科技突飞猛进,IP地址定位技术正成为网络犯罪打击的有力利器。 近期,警方通过精准的IP地址定位技术成功破获一起大规模网络犯罪案件。此案件涉及多个地区,且作案手法极其隐蔽。得益于IP地址定位技术,警方得以及时介入将罪…

APP开发者如何有效利用广告位资源,提升平台变现收益?

不同的广告场景能为开发者带来不同的收益,开发者可以对广告位进行合理开发和设计。 在广告位设计上,有三大策略可以参考: 需要尊重用户体验,基于原生、APP类型,设计适合自己的广告位样式; 可以选择性引入…

【JavaEE进阶】Spring 更简单的读取和存储对象

文章目录 一. 存储Bean对象1. 配置扫描路径2. 添加注解存储 Bean 对象2.1 使用五大类注解存储Bean2.2 为什么要有五大类注解?2.3 有关获取Bean参数的命名规则 3. 使用方法注解储存 Bean 对象3.1 方法注解储存对象的用法3.2 Bean的重命名3.3 同⼀类型多个 Bean 报错 …

mysql获取第一个逗号前面的字符串

字符串内容如下: 统编版(2019),必修下册,第五单元 ,第10课,10-2 在马克思墓前的讲话 /恩格斯, 想获取,第一个逗号前面的字符串,即:统编版(2019) 需要第一获取逗号的下标位置&…

用AI工具生成短视频大片,1分钟详细教程教会你

Hi! 大家好,我是专注于AI项目实战的赤辰, 今天我要跟大家分享如何用AI工具1分钟内生成一个短视频大片,效果完全不输影视大V。 只需要用一句话就可以生成视频,或者用一张图就能生成视频,这就是最新推出的AI工具Pika L…

生产者消费者模型 C++ 版

基础生产者消费者模型 网上一般教程是使用std::queue,定义消费者 Consumer ,定义Producter类,在main函数里面加锁保证线程安全。 本片文章,实现一个线程安全的队列 threadsafe_queue,只在队列内部加锁。如此可适配,多…

taro h5列表拖拽排序 --- sortablejs 和 react-sortable-hoc

描述:列表,拖拽排序,只测试了h5 一、sortablejs 文档:http://www.sortablejs.com/ 1.安装sortablejs 2、引入 import Sortable from sortablejs3、页面 const [list, setList] useState([{id: item-1,content: 选项1 }, {id…

什么情况,听说项目经理已经成为行业的最底层了

大家好,我是老原。 要说现在的职场人最关心什么,那肯定是自己所在的这个行业、工种市场行情如何,会不会慢慢没落了,或者被现在盛行的AI、ChatGpt给替代了。 今天这个标题的问题也是我在知乎上看到很多项目经理都在提问的问题之一…