完整教程:Nginx反向代理与缓存功能

news/2025/9/28 16:20:56/文章来源:https://www.cnblogs.com/tlnshuju/p/19117021

完整教程:Nginx反向代理与缓存功能

2025-09-28 16:18  tlnshuju  阅读(0)  评论(0)    收藏  举报

一、正向代理和反向代理

1.1 正向代理概述

1.1.1 什么是正向代理

客户端就是正向代理代理的

一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端就是正向代理

1.1.2 正向代理的作用

  • 为在防火墙内的局域网客户端提供访问Internet的途径

  • 可以运用缓冲特性减少网络使用率

  • 访问受地理位置限制的网络

  • 采用代理后会隐藏真实的IP地址

1.1.3 正向代理的基本格式

server {
listen 192.164.65.100:80;
server_name ....;#客户端访问的域名

location / {
proxy_pass http://目标服务器地址;
}
}

1.2 反向代理概述

1.2.1 什么是反向代理

服务端就是反向代理代理的

反向代理:(reverse proxy),指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式 客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址

1.2.2 反向代理可实现的功能

给出负载均衡和高可用性。就是反向代理的主要作用

通过负载均衡:Nginx能够将传入的请求分发给多个后端服务器,以平衡服务器的负载,提高系统性能和可靠性。

缓存功能:Nginx可以缓存静态材料或动态页面,减轻服务器的负载,提高响应速度。

动静分离:将动态生成的内容(如 PHP、Python、Node.js 等)和静态资源(如 HTML、CSS、JavaScript、图片、视频等)分别存放在不同的服务器或路径上。

多站点代理:Nginx可以代理多个域名或虚拟主机,将不同的请求转发到不同的后端服务器上,实现多个站点的共享端口。

1.2.3 反向代理的可用模块

ngx_http_proxy_module: #将客户端的请求以http协议转发至指定服务器进行处理

ngx_http_upstream_module #用于定义为proxy_pass,fastcgi_pass,uwsgi_pass等指令引用的后端服务器分组

ngx_stream_proxy_module:#将客户端的请求以tcp协议转发至指定服务器处理

ngx_http_fastcgi_module:#将客户端对php的请求以fastcgi协议转发至指定服务器助理

ngx_http_uwsgi_module: #将客户端对Python的请求以uwsgi协议转发至指定服务器处理

二、调整反向代理

2.1 反向代理配置参数

2.1.1 proxy_pass

proxy_pass 地址:端口的方式 ;
主机名(将转发至后端服务做为主机头首部)、IP就是#用来设置将客户端请求转发给的后端服务器的主机,可以
#也可以代理到预先设置的主机群组,需要模块ngx_http_upstream_module支持

proxy_pass http://10.0.0.18:8080;
#8080后面无uri,即无 / 符号,需要将location后面url 附加到proxy_pass指定的url后面,此行为类似于root
#proxy_pass指定的uri不带斜线将访问的/web,等于访问后端服务器

proxy_pass http://10.0.0.18:8080/;
#8080后面有uri,即有 / 符号,相当于置换,即访问/web时实际返回proxy_pass后面uri内容.此行为类似于alias
#proxy_pass指定的uri带斜线,等于访问后端服务器的http://10.0.0.18:8080/index.html 内容返回给客户端

#如果location定义其uri时采用了正则表达式模式(包括~,~*,但不包括^~),则proxy_pass之后必须不能使用uri; 即不能有/ ,用户请求时传递的uri将直接附加至后端服务器之后

2.1.2 其他参数

proxy_hide_header field;
#用于nginx作为反向代理的时候,在返回给客户端http响应时,隐藏后端服务器相应头部的信息,可以设置proxy_hide_header field;

proxy_pass_header field;
#默认nginx在响应报文中不传递后端服务器的首部字段Date, Server, X-Pad, X-Accel等参数,如果要传递的话则要使用 proxy_pass_header field声明将后端服务器返回的值传递给客户端

#field 首部字段大小不敏感
#示例:透传后端服务器的Server和Date首部给客户端,同时不再响应报中显示前端服务器的Server字段
proxy_pass_header Server;
proxy_pass_header Date;


proxy_pass_request_body on | off;
#是否向后端服务器发送HTTP实体部分,能够设置在http,server或location块,默认即为开启


proxy_pass_request_headers on | off;
#是否将客户端的请求头部转发给后端服务器,可以设置在http,server或location块,默认即为开启

三、配置实战

3.1 反向代理单台web服务器

所需配置

#代理服务器
vim /apps/nginx/conf.d/pc.conf
#编辑子配置文件
server{
listen 192.164.65.100:80;
server_name www.pc.com;
root /apps/nginx/html/pc;
location / {
proxy_pass http://192.164.65.101;
}

}
nginx -t
nginx -s reload
#重新加载

#真实服务端
yum install httpd -y #安装服务

cd /var/www/html
echo "Hi~" > index.html #主页内容

systemctl start httpd #开启服务

vim /etc/hosts
#添加地址映射

192.164.65.100 www.pc.com

#客户机

vim /etc/hosts
192.164.65.100 www.pc.com

3.2 指定主机实现反向代理动静分离

因为nginx无法处理动态资源,因而要动静分离。

所需配置

#代理服务器

vim /apps/nginx/conf.d/pc.conf
#编辑子配置文件

location /api {
proxy_pass http://192.164.65.101;
}

location /static {
proxy_pass http://192.164.65.103;
}
nginx -t
nginx -s reload
#重新加载

#动态资源服务器

#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0

#安装nginx服务
yum install -y epel-release
yum install nginx -y

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

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

相关文章

完整教程:dlib库关键点定位和疲劳检测

完整教程:dlib库关键点定位和疲劳检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

网站改版对优化的影响福建省住房和城乡建设厅的网站

MySQL大事务可能会导致过多的占用临时文件,导致磁盘空间撑满的问题 本例说明下binlog cache产生的临时文件 案例复现 调小binlog_cache_size,让DML使用临时文件 使用存储过程模拟大事务 创建表 create table t1( id int AUTO_INCREMENT, name varchar…

2025 长沙美食餐厅权威推荐排行榜:老店红记领衔新晋品牌,200 + 湘味与网红菜品深度解析,吃货必藏指南长沙美食湘菜馆 /大排档/网红店餐厅推荐

长沙餐饮市场在 “网红经济” 与 “传统坚守” 的碰撞中持续升温,却也暗藏选择困境:部分老店虽有口碑但创新不足,新兴品牌中不乏跟风炒作、食材劣质的 “短命网红”,更有商家混用预制菜、忽视食品安全,让消费者难…

千图app的下载方式搜索引擎优化推广

文章目录 1. python图形界面开发1.1. Python图形界面开发——Tkinter1.2. Python图形界面开发——PyQt1.3. Python图形界面开发——wxPython1.4. Python图形界面开发—— PyGTK:基于GTK1.5. Python图形界面开发—— Kivy1.6. Python图形界面开发——可视化工具1.7. …

长春网站制作教程app商城系统

转载自 Spring Boot国际化支持本章将讲解如何在Spring Boot和Thymeleaf中做页面模板国际化的支持,根据系统语言环境或者session中的语言来自动读取不同环境中的文字。 国际化自动配置 Spring Boot中已经对国际化这一块做了自动配置。 国际化自动配置类:o…

VKD233HH触控IC有两种输出方式“直接输出”和“锁存输出”单路触摸检测芯片

VKD233HH是单通道触摸检测芯片,功耗低、工作电压范围 宽以及稳定的触摸检测效果可以广泛的满足不同应用的需求, 此触摸检测芯片是专为取代传统按键而设计,内建稳压电路, 提供稳定电压给触摸检测电路使用,触摸检测PAD…

打包present, but unavailable

打包present, but unavailable;报错Failed to execute goal on project*: Could not resolve dependencies for project前言 本地打包一直失败,报错这 com.ctg.mq:ctg-mq-server:pom:2.7.7 (present, but unavailable…

2025 年最新推荐环保门禁厂家权威排行榜:清洁运输 / 智能 / 移动源系统及电子台账厂商详析企业/智能环保门禁厂家推荐

在 “双碳” 目标持续推进、环保监管标准不断升级的当下,企业对环保门禁系统的合规性与功能性要求愈发严苛。无论是重污染天气应急响应中的车辆管控,还是清洁运输占比统计、绩效评级数据上报,环保门禁系统已成为企业…

2025 年即时通讯公司推荐 小天互连:私有化部署即时通讯、信创即时通讯、国产化即时通讯、局域内网即时通讯、企业 IM 即时通讯解决方案解析

2025 年中国企业级即时通讯市场规模已突破 300 亿元,年增速维持 12% 的高速增长,政企用户对 IM 工具的需求从基础沟通升级为安全可控、业务集成、全栈适配的综合解决方案。在数据主权意识觉醒与信创战略深化的双重驱…

GJOI 模拟赛6、7部分题解

M6 T2 maze 根据题意,我们其实相当于从根节点向下走一颗满二叉树,每次有花费改变方向,然后操作的\(01\)序列不能超过限制。 首先可以将题目差分求解,就变成只有一个限制。 发现一个第 \(n\) 层的点最多遍历一次,那…

【C++list】底层结构、迭代器核心原理与常用接口完成全解析

【C++list】底层结构、迭代器核心原理与常用接口完成全解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

完整教程:Flink Watermark机制解析

完整教程:Flink Watermark机制解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

2025 年北京湖南菜餐厅推荐:小湖南岸以湖湘本味与匠心服务,成京城湘菜口碑之选

2025 年的北京餐饮市场呈现 “冰火两重天” 的格局:一边是同质化竞争加剧、成本高企导致部分品牌陷入经营困境,另一边是坚守品质与特色的餐饮品牌凭借精准定位实现逆势增长。作为全国美食汇聚地,北京的湘菜赛道尤为…

完整教程:龙芯在启动参数里添加串口信息

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

ABC425题解

A. Sigma Cubescode #include<bits/stdc++.h> using namespace std; int n; int main(){cin >> n;int ans = 0;for(int i = 1; i <= n; ++i){ans += ((i&1)?-1:1) * (i * i * i); }cout << …

技术分享 | Dify智能体案例分享:智能导诊助手 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

STM32中的Flash、ROM与RAM全解析 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Functions

FunctionsVector std:ranges::sort() -std=c++20 是一个C++20引入的排序函数,收录于#include<algorithm> ()里的内容通常是 vector 和 array(满足随机访问迭代器要求),也可以是其它符合范围 概念 的序列。 使…