nginx 反向代理 负载均衡 动静分离

一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。

比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问

但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多,并发量也慢慢增大,此时一台服务器已经满足不了网站的需求了。

你不能眼睁睁的看着你的"孩子"被压垮呀,于是乎,一咬牙又花钱加了几台服务器。

一、什么是Nginx

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,在微服务架构中,Nginx作为客户端请求的第一层中间件,通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等,在微服务架构如下:

其特点是占用内存少,并发能力强,运行还很文档,几乎可以做到7x24h不间断运行,即使运行数个月也不需要重启。而且,还能在服务不间断的情况下进行软件版本的升级。

Nginx代码完全用C语言编写,官方数据测试表明能够支持高达50000个并发连接数的响应。

反向代理

为了安全起见,一般我们不会将应用服务器内网地址暴露给外界,此时就让Nginx作为代理来访问内网地址。而Nginx的IP地址可以作为公网IP暴露给外界使用,这样就屏蔽了内网服务器信息。例如:

正向代理:访问www.google.com 需要正向代理,访问的目的地不发生变化

  • 首先在本机修改hosts文件
    路径为:C:\Windows\System32\drivers\etc\hosts
    添加以下内容:
php 复制代码
# 192.168.152.160是远程Nginx服务器地址
192.168.152.160    gulimall.com

当客户端输入 gulimall.com时,通过本地域名映射规则,解析出Nginx服务器地址

  • 设置Nginx反向代理
    修改nginx.conf的server段
perl 复制代码
 listen 80;
 server_name  gulimall.com;
 location / { 
  #代理给内网服务地址   
  proxy_pass http://172.20.10.3:8000; #商品服务的地址
 }

这样,我们就实现了Nginx的反向代理,是不是很简单呢?

三、负载均衡

现在有好几台服务器了,也有代理服务器了。但是因为你预算有限,后加的几台服务器配置有高有底,这时候如果能让配置高的服务器多承担点压力,让配置低的少承担点压力就好了。

Nginx的负载均衡就可以完成这样的需求。

在 conf.d 目录下创建 gulimall.conf --- 操作 cp defaut.conf gulimall.conf

gulimall.conf 配置文件如下

perl 复制代码
 listen 80;
 server_name  gulimall.com;
 location / { 
  #代理给内网服务地址   
  proxy_pass http://gulimall; #商品服务的地址
 }

nginx.conf 配置文件如下 选择的默认负载均衡:轮询

perl 复制代码
upstream gulimall{
    server 172.20.10.3:88;
    server 172.20.10.3:89;
}

网关的配置文件 application.yml文件如下

TypeScript 复制代码
spring:
  application:
    name: gulimall-gateway

  cloud:
    gateway:
      routes:
        - id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
            - Host=gulimall.com,item.gulimall.com

四、动静分离

你的小网站里有些请求是需要后台处理的,但是有些请求是不需要的,比如 css、html、jpg、js等文件,这些统称为静态文件

Nginx可以根据一定规则把不变的资源和经常变的资源区分开,做好了拆分之后,我们就可以根据静态资源的特点将其做缓存操作,从而提高资源响应的速度。

gulimall.conf 配置文件如下

TypeScript 复制代码
location /static/ {
    root /usr/share/nginx/html;
}

把对应的静态文件放在/usr/share/nginx/html/即可

OK,通过动静分离,你的小网站响应速度也上去了,用户体验更好了,你终于送了口气。

--不要用肉体的勤奋,去掩盖思考的懒惰--

相关推荐
爱喝水的鱼丶6 小时前
SAP-ABAP:ABAP 用户出口开发规范与避坑指南:10 类典型错误与运维方案
运维·性能优化·sap·abap·增强·经验交流·出口
博、、6 小时前
从零构建智慧场馆解决方案:架构设计与开发实践
大数据·运维
敢敢是只喵i6 小时前
给现有业务系统接 AI 助手,入口怎么选?网页聊天、自动化任务与本地 Agent 对比
运维·人工智能·ai·开源·自动化·安全架构
章老师说7 小时前
BFE v1.8.6 正式发布:AI 网关计费精细化、Claude 协议与会话亲和性升级
运维·人工智能·ai·负载均衡·ai-native
Brilliantwxx8 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
欧米欧8 小时前
Linux基础指令上
linux·运维·服务器
爱喝水的鱼丶9 小时前
SAP-ABAP:BAdI 上下文数据获取与交互:标准数据读取与修改逻辑实现
运维·性能优化·sap·abap·增强·经验交流·badi
ARM|X86+FPGA工业主板厂家9 小时前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人
pt104310 小时前
网络自动化Python课程:Python与Linux密钥和敏感信息管理介绍
运维·自动化
严谨的麻辣烫10 小时前
2026 年静态 IP 为什么重新受到关注?从住宅代理安全问题看固定网络出口
运维·服务器·tcp/ip·网络安全