LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

运维篇——Nginx上篇

admin
2025年8月17日 0:21 本文热度 36

一、Nginx介绍

Nginx(发音为 "engine-x")是一款开源的、高性能的HTTP服务器和反向代理服务器,同时也提供了IMAP/POP3/SMTP的代理功能。它最初由俄罗斯的程序员Igor Sysoev开发,并于2004年首次公开发布。Nginx以其高效、稳定、低资源消耗以及高并发处理能力而闻名,被广泛用于静态内容服务、负载均衡、HTTP缓存、以及作为反向代理服务器来管理后端的服务请求。(ps:百度搜的)

接下来就从负载均衡、反向代理&正向代理、动静分离三个用途给大家介绍一下。

二、Nginx 负载均衡

什么是负载均衡呢?给大家举个贴切生活的例子,大家去超市买东西,买完后准备去结账,前台有三个收银台,但是都排在第一个收银台,队伍又臭又长,一号收银员忙的飞起,二号跟三号闲着刷手机,这时候就需要一个正义的人站出来,没错就是超市老板来了,把顾客一个一个分到二号跟三号收银台去,这样三个收银台都在工作了,而且每个人也不会太累。

这里顾客就代表访问网站的用户,收银台和收银员就是后端的服务器(处理用户的请求),超市老板就是负载均衡(将请求分发给多个后端)

这时候肯定有聪明的小伙伴会问了,你怎么知道每台服务器分配多少请求?我们用 Nginx做负载均衡都可以替我们去合理的分配请求。

Nginx负载均衡的方式:

1、轮询法(默认方式)

顾名思义,就是一台一台服务器按顺序轮转。默认权重一样。举个例子,假如有三台服务器ABC,第一个请求给了A,第二个就是B,第三个就是C,依次循环。

相关配置:

upstream yidiandian {    server yidiandian1.com; #server 后可以写域名也可以直接写ip    server yidiandian2.com;    server yidiandian3.com;}

2、加权轮询

在轮询的基础上分配更高的权重可以获得更的请求。举个例子,有三个孩子,一个18岁、一个15岁、一个12岁,现在有10个箱子要搬,岁数大的会分到多点,岁数小的会分到少点,这里岁数相当于权重。权重高的可以分配到更多请求,权重低的就分配较少请求。

相关配置:

upstream yidiandian {    server yidiandian1.com weight=1# 分到的请求最少    server yidiandian2.com weight=2# 分到的请求中等    server yidiandian3.com weight=3# 分到的请求最多}

3、ip_hash

根据客户端 IP 地址的哈希值决定将请求转发到哪台服务器。同一个 IP 地址的请求总是转发到同一台后端服务器。

相关配置:

upstream yidiandian {    ip_hash;                     # 开启ip_hash    server yidiandian1.com;    server yidiandian2.com;    server yidiandian3.com;}

4、最少连接数

顾名思义,将请求分发给当前最少请求的服务器上。

相关配置:

upstream yidiandian {    least_conn;                   # 开启最少连接数策略    server yidiandian1.com;    server yidiandian2.com;    server yidiandian3.com;}

上面这几种方式都能有效地解决请求如何分配的问题,可以供用户自行选择。

三、Nginx 反向代理&正向代理

老样子,什么是反向代理?什么是正向代理呢?再给大家举两个例子。

反向代理:**最贴切生活的,大家在某宝、某动、某夕夕上买东西,你访问一个商品信息,这个请求首先到达了一个Nginx反向代理服务器。这个反向代理服务器根据负载均衡算法选择一个后端的真实服务器来处理你的请求,后端服务器处理完请求后,响应会先返回给反向代理服务器,再由反向代理服务器转发给你。整个过程中,你并不知道具体是哪个后端服务器处理了你的请求。

相关配置:

http {    upstream yidiandian {        server yidiandian1.com;        server yidiandian2.com;        server yidiandian3.com;    }    server {        listen 8090;          # 设置监听端口,不冲突就行        location / {            proxy_pass http://yidiandian;        # 会按照上面的upstream配置的三个server之间轮询            proxy_set_header Host $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;        }    }}

正向代理:**也是比较贴切生活的,假如大家上班的时候无聊想摸鱼,连着公司网络想要访问国外的 Facebook 或 Twitter,直接访问的话公司网络策略限制了你直接访问,但是呢假如公司有正向代理服务器来访问。你在浏览器配好正向代理后,访问 Facebook,正向代理服务器代表你去访问Facebook,并将响应返回给你。这样,尽管直接访问Facebook是受限的,但通过正向代理,你仍然能够浏览该网站。

相关配置:

http {    server {        resolver 114.114.114.114;  # 设置DNS解析器,按自己需求进行设置,这里设置的是由中国电信提供的DNS解析器        listen 1234;  # 代理服务器监听端口,随便设置,不冲突就行        location / {            proxy_pass $scheme://$host$request_uri;  # 转发请求,通过代理服务器将请求转发给目标服务器。            proxy_set_header Host $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;        }    }}

从上面两个例子我们可以了解到,反向代理可以确保没有一台服务器过载,并且外部用户无法直接访问后端服务器,隐藏了后端服务器的ip,减少了攻击面。正向代理帮助我们绕过了网络访问限制,同时隐藏了我们的真实IP地址。

四、Nginx动静分离

举不动了,大家直接看官方的回答(ps:没想到比较好的)

Nginx的动静分离是一种优化Web服务器性能的技术,主要用于高效地处理静态资源(如HTML、CSS、JavaScript和图片文件等)和动态内容(比如由PHP、Python或其他后端语言生成的内容)。通过动静分离,可以显著提高网站的加载速度和用户体验。

动静分离的基本思路是将静态资源请求和动态请求分开处理:

静态资源:对于静态资源,可以直接由Nginx进行服务。Nginx在处理静态文件时非常高效,因为它不需要像动态请求那样调用外部应用服务器。

动态内容:当涉及到动态内容时,Nginx会将这些请求代理到后端的应用服务器(如Tomcat、Django、Node.js等),然后将处理结果返回给客户端。

相关配置(来源于网上):

http {    # 定义上游服务器,即后端的应用服务器    upstream backend_app {        server 127.0.0.1:8000;  # 假设后端服务运行在本地的8000端口    }    server {        listen 80;  # 监听HTTP的80端口        server_name example.com;  # 你的域名        # 配置静态资源的访问路径        location /static/ {            alias /var/www/example/static/;  # 静态资源的实际存放路径        }        location /media/ {            alias /var/www/example/media/;  # 用户上传文件等媒体资源的存放路径        }        # 将所有非静态资源的请求转发到后端的应用服务器        location / {            proxy_pass http://backend_app;            proxy_set_header Host $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;        }    }}


阅读原文:原文链接


该文章在 2025/8/18 18:45:47 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved