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

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

    • 正向代理
    • 一、使用正向代理的主要作用有:
    • 二、反向代理
    • 三、使用反向代理的主要作用有:
    • 四、透明代理
    • 五、各种代理的主要区别
    • 六、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.dserver {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.rhkb.cn/news/76121.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

less的使用

less的介绍: less使用 1、 less使用的第一种用法,起变量名,变量名区分大小写: 这里我们定义一个粉色变量 我想使用直接把变量拿过来就行 2、vscode使用插件,直接将Css文件转换less文件: 3、第二种用法&…

【力扣每日一题】2023.8.5 合并两个有序链表

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们两个有序的链表,要我们保持升序的状态合并它们。 我们可以马上想要把两个链表都遍历一遍,把所有节点的…

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案 1.查看当前的android studio 版本 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 2.打开 idea 官网下载页面 idea下载历史版本 找到对应的版本编号…

MySQL 与MongoDB区别

一、什么是MongoDB呢 ? MongoDB 是由C语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一…

集中/本地转发、AC、AP

1.ADSL ADSL MODEM(ADSL 强制解调器)俗称ADSL猫 ADSL是一种异步传输模式(ATM)。ADSL是指使用电话线上网,需要专用的猫(Modem),在上网的时候高频和低频分离,所以上网电话两不耽误,速…

Vue命名规范

JS文件命名 一般采用的是小驼峰命名法,如 pieChartHelp 第一个单词小写,其他单词首字母大写 Components 文件命名 一般采用的是大驼峰命名法,如PieChart 所有单词的首字母大写 常量命名 一般全部大写,每个单词使用分隔符隔开&…

若依打印sql

官方issue 自动生成的代码,sql日志怎么没有打印 在ruoyi-admin中的application.yml配置如下。 # 日志配置,默认 logging:level:com.ruoyi: debugorg.springframework: warn#添加配置com.ying: debug输出sql

网络基础1

文章目录 网络基础11. 计算机网络背景1.1 网路发展1.2 认识 "协议" 2. 网络协议初识2.1 协议分层2.2 OSI七层模型2.3 TCP/IP五层(或四层)模型协议栈与OS的关系 3. 网络传输基本流程3.1 同一个局域网两台主机通信3.2 同一个路由器的两个子网通信 4. 网络中的地址管理4…

PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验

Proacademy是在线教育一体化的解决方案,用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程,现场课程,测验等等,并有一个基于实际业务需要的高级认证插件,程序基于Laravel强大的安全框…

通过51单片机实现直流电机调速

一、项目背景及目的 随着各种工业生产设备和机械设备的广泛使用,直流电机调速技术的研究和应用越来越受到人们的重视,具有广泛的应用前景。本项目通过51单片机实现直流电机调速功能,为实际工程应用提供一个可靠和有效的调速方案。 二、设计思…

基于LLM的SQL应用程序开发实战(二)

基于LLM的SQL应用程序开发实战(二) 16.2 使用LangChain SQL代理 回到案例应用本身,我们使用“Run All”的方式重新运行一下,让大家看见更多内部的内容,如图16-5所示,因为在VSCode代码编辑器中,可以看见Jupyter关于当前应用的变量(variable)。 图16- 5 查询Jupyter V…

嵌入式:C高级 Day3

一、整理思维导图 二、判断家目录下,普通文件的个数和目录文件的个数 三、输入一个文件名,判断是否为shell脚本文件,如果是脚本文件,判断是否有可执行权限,如果有可执行权限,运行文件,如果没有可…

【SQL应知应会】表分区(四)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…

phpstudy 进行 composer 全局配置

背景 因为注意到,使用 phpStudy 进行环境搭建时,有时需要使用 composer 每次都需要查找资料进行配置, 在此进行记录笔记,方便有需要的道友借鉴 配置 版本:composer1.8.5(phpStudy8 当前只能安装这一个版本…

MicroPython ESP32网页实时更新DHT11数据显示

MicroPython ESP32网页实时更新DHT11数据显示 📌相关篇《MicroPython ESP32 读取DHT11温湿度传感器数据》📍《【Micropython esp32/8266】网页点灯控制示例》 ✨本例综合以上两篇文章内容实现:在本地网页中显示DHT11温度传感器数据。可以做到…

git merge 和rebase区别

Merge the incoming changes into the current branch 找到两个分支的祖先 commit,然后将公共分支最新版合并到自己的分支,形成一个新的 commit 提交,用图表示如下。 Rebase the current branch on top of the incoming Rebase 则是重新基于…

3d 地球与卫星绕地飞行

1 创建场景 2 创建相机 3 创建地球模型 4 创建卫星中心 5 创建卫星圆环及卫星 6 创建控制器 7 创建渲染器 <template><div class"home3dMap" id"home3dMap"></div> </template><script> import * as THREE from three impo…

计算机网络——学习笔记

付费版&#xff1a;直接在上面的CSDN资源下载 免费版&#xff1a;https://wwsk.lanzouk.com/ijkcj13tqmyb 有疑问或者错误的地方可以在评论区指出&#xff0c;我会尽快回复 示例图&#xff1a;

Linux操作系统块设备参数调优

目录 一、队列深度 二、调度算法 三、预读量 四、I/O对齐 一、队列深度 队列深度决定了给块设备写I/O的最大并发数&#xff0c;对于Linux系统&#xff0c;默认值为128&#xff0c;一般情况下不建议用户修改此参数。用户可以使用cat命令查询当前块设备队列深度。 linux-ob3a…

el-cascader级联选择器加载远程数据、默认开始加载固定条、可以根据搜索加载远程数据。

加载用户列表分页请求、默认请求20条数据。想添加远程搜索用户功能。原有的方法filter-method不能监听到输入清空数据的时候。这样搜索完无法返回默认的20条数据。直接监听级联选择的v-model绑定的值是无法检测到用户自己输入的。 解决思路&#xff1a; el-cascader 没有提供…