Nginx静态内容和反向代理

文章目录

  • 一、Nginx介绍
    • 1. 简介
    • 2. 相关网站
    • 3. 配置文件
  • 二、location说明
    • 1. 匹配规则
    • 2. 替换匹配部分
  • 三、Nginx代理
    • 1. Spring服务代理
    • 2. MySQL代理
    • 3. MinIO代理


一、Nginx介绍

1. 简介

Nginx(读作“engine x”)是一个高性能的开源HTTP和反向代理服务器。
高性能:可以处理大量的并发连接,并且具有响应速度快、资源消耗低的优点。
反向代理:可以作为反向代理服务器,负载均衡、动态内容缓存。
静态内容服务:可以快速地提供静态网页、图像、视频等静态内容的传输。
HTTP缓存:可以配置HTTP缓存策略,缓存静态内容和动态内容的响应,减轻后端服务器的负载。
安全性:具有安全性强的特点,可以进行安全的通信,支持SSL/TLS协议和HTTPS的加密连接。

2. 相关网站

Nginx官方下载

3. 配置文件

worker_processes auto;								# 开启业务进程数, 建议设置为CPU总核心数
worker_rlimit_nofile 51200;							# 打开文件数的总和events{use epoll;									# 使用epoll模型worker_connections 51200;					# 客户端最大连接数multi_accept on;							# 同时接受多个连接请求}http{include mime.types;							# 引入http mime类型default_type application/octet-stream;		# 默认文件类型client_header_buffer_size 32k;				# 接收用户请求中HTTP header部分时分配的内存buffer大小large_client_header_buffers 4 32k;			# 请求中的HTTP header超过client_header_buffer_size时生效client_max_body_size 500m;					# 允许客户端请求的最大单文件字节数client_body_buffer_size 512k;				# 缓冲用户端请求的最大字节数proxy_connect_timeout 300;					# 和后端服务器连接超时时间proxy_read_timeout 300;						# 连接成功后, 后端服务器响应超时时间proxy_send_timeout 300;						# 后端服务器数据回传超时时间proxy_buffer_size 32k;						# 保存用户头信息的缓冲区大小proxy_buffers 4 64k;						# proxy_buffers缓冲区proxy_busy_buffers_size 128k;				# 高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 128k;			# 缓存文件夹大小# 当其中一台返回错误码时, 可以分配到下一台服务器程序继续处理proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; # 111# 限制并发连接数以及下载带宽limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;sendfile on;								# 开启高效文件传输模式tcp_nopush on;								# 防止网络阻塞tcp_nodelay on;								# 防止网络阻塞keepalive_timeout 300;						# 客户端连接保持活动的超时时间# FastCGI配置, 改善网站的性能fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 256k;fastcgi_intercept_errors on;# gzip压缩配置gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;gzip_vary on;gzip_proxied expired no-cache no-store private auth;gzip_disable "MSIE [1-6]\.";# 虚拟主机, 可以配置多个server{listen 8080;								# Nginx监听端口号# 设置静态内容服务location / {alias /usr/share/nginx/html/;}# 设置反向代理location /test/base/api/ {proxy_pass http://127.0.0.1:8002/base/api/;}# 设置Nginx状态模块location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;}# 未匹配uri禁止访问location ~ /\.{deny all;}}
}

二、location说明

1. 匹配规则

语法匹配规则优先级
=精确匹配uri完整路径, 如果匹配成功,则立即处理请求1
^~前缀匹配,会匹配表达式最长的那个2
~区分大小写的正则匹配, 如果匹配成功,则立即处理请求3
~*不区分大小写的正则匹配, 如果匹配成功,则立即处理请求3
不带修饰符匹配,会匹配表达式最长的那个4
/通用匹配5
location /a/b/ {			# 规则1return 101;
}
location = /a/b/ {			# 规则2return 102;
}
location ^~ /a/b/c/ {		# 规则3return 103;
}
location ^~ /a/b/c/d/ {		# 规则4return 104;
}
location ~ /a/b/ {			# 规则5return 105;
}
location ~* /a/b/ {			# 规则6return 106;
}
location /b/c/ {			# 规则7return 107;
}
location /b/ {				# 规则8return 108;
}
location / {				# 规则9return 109;
}# 精确匹配,返回状态码 102
curl -I http://127.0.0.1:8080/a/b/
# 前缀匹配,返回状态码 103
curl -I http://127.0.0.1:8080/a/b/c/d?e=1
# 前缀匹配,返回状态码 104
curl -I http://127.0.0.1:8080/a/b/c/d/e?f=1
# 区分大小写正则匹配,返回状态码 105
curl -I http://127.0.0.1:8080/a/b/c?d=1
# 不区分大小写正则匹配,返回状态码 106
curl -I http://127.0.0.1:8080/a/B/c?d=1
# 不带修饰符匹配,返回状态码 107
curl -I http://127.0.0.1:8080/b/c/d?e=1
# 不带修饰符匹配,返回状态码 108
curl -I http://127.0.0.1:8080/b/c?d=1
# 通用匹配,返回状态码 109
curl -I http://127.0.0.1:8080/b?d=1

2. 替换匹配部分

语法说明
proxy_pass不带/把请求的path拼接到proxy_pass之后
proxy_pass带/匹配成功的部分剪切掉后再拼接到proxy_pass之后
# 访问地址:http://127.0.0.1:8080/test/api
location /test/api {proxy_pass http://127.0.0.1:8080;
}# 访问地址:http://127.0.0.1:8080/api/
location /test/api/ {proxy_pass http://127.0.0.1:8080/api/;
}

三、Nginx代理

1. Spring服务代理

# 前端静态内容
location /test/spring/ {alias /usr/share/nginx/html/spring/;
}# 后端接口反向代理
location /test/spring/api/ {proxy_pass http://127.0.0.1:8080/spring/api/;# nginx转发时保留原始请求域名信息proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

2. MySQL代理

stream标签和http同级

stream{allow 192.168.1.12;deny all;server{listen 3306;proxy_pass 192.168.1.11:3306;}}

3. MinIO代理

location /test/minio/ {proxy_pass http://192.168.1.11:9000/; proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;
}

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

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

相关文章

(2.2w字)前端单元测试之Jest详解篇

Jest Jest 概述 Jest是一个领先的JavaScript测试框架,特别适用于React和Node.js环境。由Facebook开发,它以简单的配置、高效的性能和易用性而闻名。Jest支持多种类型的测试,包括单元测试、集成测试和快照测试,后者用于捕获组件或…

阿里云轻量应用服务器和ECS云服务器区别(官方文档)

阿里云轻量应用服务器和ECS云服务器有啥区别?轻量应用服务器是轻量级服务器,轻量适合个人开发者或中小企业使用,清理使用简单、可视化运维更容易上手;ECS云服务器专业级服务器,适合企业级应用,通用型、计算…

python 将普通文件转换为ts文件,用udp-ts 发送

将普通文件转换为TS文件并使用UDP发送是一个相对复杂的过程,因为你需要遵循TS流的格式来封装原始数据。TS流通常用于封装视频和音频数据,包含固定的包头和负载数据。对于简单的文本或二进制文件,将其转换为TS流并不常见,因为TS是为…

Math--API

Math 数学工具类,提供一些对数据进行操作的静态方法 Math类常用API 方法名说明public static int abs(int a)获取参数绝对值public static double ceil(double a)向上取整public static double floor(double a)向下取整public static int round(f…

Rust 学习笔记 - 注释全解

前言 和其他编程语言一样,Rust 也提供了代码注释的功能,注释用于解释代码的作用和目的,帮助开发者理解代码的行为,编译器在编译时会忽略它们。 单行注释 单行注释以两个斜杠 (//) 开始,只影响它们后面直到行末的内容…

如何在 Angular 中使用 Flex 布局

介绍 Flex Layout 是一个组件引擎,允许您使用 CSS Flexbox 创建页面布局,并提供一组指令供您在模板中使用。 该库是用纯 TypeScript 编写的,因此不需要外部样式表。它还提供了一种在不同断点上指定不同指令以创建响应式布局的方法。 在本教…

多数据源支持

平台倡导分布数据库,最简单的分库逻辑是按业务领域,例如人力资源系统一个库,客户关系管理一个库(举个例子而已,在平台正式的系统中,人力资源系统又细分为核心库、绩效管理库、薪资管理库等)。一…

springboot/ssm公司进销存系统Java商品销售出入库系统

springboot/ssm公司进销存系统Java商品销售出入库系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&#x…

基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于PPNSA扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图和优化收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022a版本运行…

【JavaScript】面试手写题精讲之数组(上)

专题缘由 该专题主要是讲解我们在面试的时候碰到一些JS的手写题, 确实这种手写题还是比较恶心的。有些时候好不容易把题目写出来了,突然面试官冷不丁来一句有没有更优的解法,直接让我们僵在原地。为了解决兄弟们的这些困扰,这个专题于是就诞…

python入门:常用模块—jsonpickle模块

什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 为什么要序列化? 你打游戏过程中,打累了,停下来,关掉…

随想录刷题笔记 —二叉树篇6 513找树左下角的值 112路径总和 106中序后序构造二叉树

513找树左下角的值 找出该二叉树的 最底层 最左边 节点的值 解法一&#xff1a;队列——层次遍历 class Solution {public int findBottomLeftValue(TreeNode root) {Queue<TreeNode> treeNodes new LinkedList<>();treeNodes.offer(root);int count 1;int re…

贪心算法之合并区间

“任世界多宽广&#xff0c;停泊在这港口~” 区间问题&#xff0c;涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后&#xff0c;其默认规则就是按照 “左排序”进行的。因而&#xff0c;我们实质上注意的是每一个区间的 右端点&#xff0c;根据题目要求&#xff…

蓝桥杯:C++模运算、快速幂

模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 模是英文mod的音译&#xff0c;取模实际上是求余。 取…

表达式 副作用 序列点

语句分类 标号语句(标签&#xff0c;常与goto配合使用)复合语句(块)表达式语句(赋值表达式语句、函数表达式语句等)选择语句迭代语句(循环)跳转语句(return,break,continue) 其中复合语句(块)可视为单个语句。因此while和for循环之后加的是单个语句(简单语句、复合语句、空语…

树莓派:使用mdadm为重要数据做RAID 1保护

树莓派作为个人服务器可玩性还是有点的。说到服务器&#xff0c;在企业的生成环境中为了保护数据&#xff0c;基本上都会用到RAID技术。比如&#xff0c;服务器两块小容量但高性能的盘做个RAID-1按装操作系统&#xff0c;余下的大容量中性能磁盘做个RAID-5或者RAID-6存放数据。…

网络原理(HTTP篇)

网络原理HTTP 前言HTTPHTTP的工作流程抓包工具抓取HTTP报文HTTP报文格式 请求报文具体细节首行URLURL的基本格式URL encode 方法 报头(header)HostContent-Length 和 Content-TypeUser-Agent&#xff08;UA&#xff09;RefererCookie&#xff08;重要&#xff09; 前言 如图&a…

HAL/LL/STD STM32 U8g2库 +I2C SSD1306/sh1106 WouoUI磁贴案例

HAL/LL/STD STM32 U8g2库 I2C SSD1306/sh1106 WouoUI磁贴案例 &#x1f4cd;基于STM32F103C8T6 LL库驱动版本&#xff1a;https://gitee.com/chcsx/platform-test/tree/master/MDK-ARM&#x1f3ac;视频演示&#xff1a; WouoUI移植磁贴案例&#xff0c;新增确认弹窗 &#x1f…

Unity中关于ScrollRect组件完整解决方案(ScrollRect中元素自动排版+ScrollRect中元素自动定位到Viewport可见范围内)

一、元素自动排版功能 1、首先要往我们的unity项目中导入两个脚本文件&#xff0c;脚本文件名称分别是UIScrollEventListener和CZScrollRect&#xff0c;这两个脚本文件代码如下所示。 1-1、介绍UIScrollEventListener脚本写法。 using System.Collections; using System.Co…

Ubuntu 20.04 安装RVM

RVM是管理Ruby版本的工具,使用RVM可以在单机上方便地管理多个Ruby版本。 下载安装脚本 首先使下载安装脚本 wget https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 如果出现了 Connection refused 的情况, 可以考虑执行以下命令修改dns,再执…