nginx学习

Nginx知识详解(理论+实战更易懂) Nginx:engine X ,2002年开发,分为社区版和商业版(nginx plus ) 2019年3月11日 F5 Networks 6.7亿美元的价格收购。Nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服务器。解决C10K问题(10K Connections)。nginx newsTengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加 了很多高级功能和特性。 阅读详情
nginx
	验证修改nginx.conf文件是否正确
		./sbin/nginx -t
	重启nginx
		./sbin/nginx -s reload

一、nginx简介

1、什么是nginx,有什么特点?

nginx: 是高性能的HTTP和反向代理web服务器

特点: 内存占有少,处理并发能力强。

2、正向代理

nginx不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。

正向代理: 如果把局域网外的Internet想象成为一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

3、反向代理

反向代理: 我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器,暴露的是代理服务器地址,隐藏了真实服务器ip地址。

4、负载均衡

(1)增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上。
(2)客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

上述(2)这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?

我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能够满足需求的。那么怎么办呢?
上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?
这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

请添加图片描述

5、动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速 度。降低原来单个服务器的压力。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Nginx 的常用命令和配置文件

1、nginx实现请求转发的功能

nginx下载网址
请添加图片描述

2、nginx安装(Linux:centos)

./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置

3、关于防火墙

关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload

4、安装成系统服务

创建服务脚本

vi /usr/lib/systemd/system/nginx.service

服务脚本内容

[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

重新加载系统服务

systemctl daemon-reload

启动服务

systemctl start nginx.service

开机启动

systemctl enable nginx.service

三、Nginx基础使用

3.1目录结构

进入Nginx的主目录我们可以看到这些文件夹

client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp

其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件

client_body_temp fastcgi_temp proxy_temp scgi_temp
conf:用来存放配置文件相关
html:用来存放静态文件的默认目录 html、css等
sbin:nginx的主程序

3.2基本运行原理

在这里插入图片描述

主机要访问http://192.168.44.101/index.html,nginx运行流程:
1、nginx启动后,主进程master开启,master会去读取nginx.conf配置文件并校验文件;
2、若校验没有问题,会开启多个Worker子进程接受响应请求;
3、Worker会读取nginx.conf配置,然后根据配置读取响应;

3.3Nginx配置与应用场景

其他文章: nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

3.4基于反向代理的负载均衡

upstream httpd {
server 192.168.44.102:80;
server 192.168.43.103:80;
}
1、负载均衡策略

在这里插入图片描述

3.5防盗链配置

在这里插入图片描述

3.6高可用配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.7Https证书配置 — 不安全的http协议

在这里插入图片描述

四、Nginx实际操作使用遇到的

4.1上传ftp,无法预览文件【直接下载】

原因是nginx中配置导致的,只要检测到符合要求的文件就直接下载,如下:

location /ftp/ {
          set $flag 0;
          # 请求文件名后缀如果是 如下  则定义变量flag 1
          if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$){
              set $flag 1;
          }
          if ($request_uri ~* view$){    
                  set $flag 2;
          }
          # 如果为1 咋直接下载 不想下载就注释下面代码
          if ($flag = 1){
                 add_header Content-Disposition "attachment; filename=$1";
          } 
          alias /home/ftptest/;
          autoindex on;
}

五、使用案例总结

1、因服务器A无认证证书无法使用https,故而使用服务器B

思路:
(1)在服务器A上启动后台jar包
(2)在服务器B上部署前端dist
1.1、服务器B的nginx.conf

在这里插入图片描述

1.2、服务器A的nginx.conf

在 server listen为8089下
在这里插入图片描述

六、二级域名部署,及刷新之后404处理

1、修改程序

// 1、修改vue.config.js,改为二级域名 例:admin
//publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
publicPath: process.env.NODE_ENV === "production" ? "/admin/" : "/admin/",

// 2、修改router/index.js,添加 base:"admin"
export default new Router({
  mode: 'history', // 去掉url中的#
  scrollBehavior: () => ({ y: 0 }),
  base: "admin",
  routes: constantRoutes
})

// 3、修改layout/components/Navbar.vue,修改退出操作
this.$store.dispatch('LogOut').then(() => {
   // location.href = '/index';
   this.$router.push(`/login?redirect=${this.$route.fullPath}`)
 })

2、nginx部署 这里是最关键的一步

location /admin/ {
     alias /mydata/docker/trade/trade_mng/admin/;
     try_files $uri $uri/ @dsrouter;
     index  index.html;
}

location @dsrouter {
    rewrite ^/(admin)/(.+)$ /$1/index.html last;
}

最关键的点就是 @dsrouter 重定向处理

router的配置 一级域名和二级域名是有区别的,对比如下:

#一级域名
location @router {
    rewrite ^.*$ /index.html last;
}

#二级域名
location @dsrouter {
    rewrite ^/(admin)/(.+)$ /$1/index.html last;
}

在这里插入图片描述

Nginx (40分钟学会,快速入门) Nginx 是高性能的 HTTP 和反向代理的 web 服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50000个并发的连接数.Nginx特点就是内存少,并发能力强。事实上Nginx的并发能力确实在同类型的网页服务器中表现比较出色,中国大陆使用Nginx网站用户有:百度、京东 、新浪 、 网易、腾讯 、淘宝等。为什么要使用Nginx?之前我们传统服务,访问量小的情况下都是直接访问到 服务IP 地址。 阅读详情

相关推荐

Nginx完全学习指南 - 从入门到实战

这份详细的Nginx学习指南涵盖了从基础概念到高级配置的所有重要知识点。文档结构清晰,示例丰富,适合初学者循序渐进地学习Nginx。每个章节都包含了实际应用场景和配置示例,帮助读者理解和掌握Nginx的核心功能。

weixin_51040479的博客 1238

一文快速搞懂Nginx —— Nginx 详解

Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者 统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议 提供各种网络服务。 Nginx是一款 轻量级 的 Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

weixin_43412762的博客 7万+

【学习Nginx-00】学习Nginx遇到的问题及解决

学习Nginx遇到的问题及解决 问题1 问题 [root@master init.d]# service nginx start Starting nginx (via systemctl): Job for nginx.service failed because the control process exited with error code. See “systemctl status...

AlanLee97的博客 3207

Nginx 安装与部署配置以及Nginx和uWSGI开机自启

下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放置于英文目录下即可!): 启动 两种方法: 1) 直接双击该目录下的"nginx.exe",即可启动nginx服务器; 2) 命令行进入该文件夹,执行start...

diwudong1059的博客 5693

电感轴键盘技术解析:原理、优势与电竞场景应用

键盘作为人机交互的核心外设,其触发原理直接影响响应速度、寿命与使用体验。传统机械键盘依赖金属触点物理接触,在通断瞬间易产生火花与氧化,长期使用可能导致接触电阻增大、手感变化甚至连击问题,即所谓的“红温”现象。而电感轴(或称磁轴)技术则通过磁场感应实现无接触触发,从根本上消除了触点磨损与抖动,实现了亚毫秒级响应与数亿次超长寿命。这项技术的核心价值在于为电竞等高强度使用场景提供了极致稳定与一致性的输入保障,尤其适合追求APM极限与设备可靠性的职业选手及发烧友。电感轴键盘的“降温”优势并非主动散热,而是通过低功耗

weixin_34392435的博客 377

目标检测数据集 第069期-基于yolo标注格式的玻璃清洁状态检测数据集(含免费分享)

但这类技术的落地,离不开大量标注规范、场景丰富的数据集作为算法训练的支撑,玻璃清洁状态检测数据集的出现,正是为了满足这一市场与技术需求。在高校与科研机构的计算机视觉研究中,该数据集可作为基础研究素材,用于探索物体状态识别的算法优化方向,比如针对玻璃这类透明物体的检测算法改进,或是小样本场景下的状态识别研究。通过摄像头采集车窗、挡风玻璃的图像,算法自动检测玻璃清洁度,若识别到脏污影响视线,及时提醒运维人员清洁,避免因玻璃脏污引发的安全事故,提升交通出行的安全性。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 128

Nginx 学习书单整理

以下是“Nginx到底该怎么学?”的主题纲要。 作为工程师的我们,为什么要学Nginx? 第一点:Nginx对整个架构的帮助是非常大的。 2007年,我从华为来到了腾讯的QQ空间,在数据开发组工作。当时QQ空间小组也就是十来个人,大概有一亿多用户,同时在线大约在三百万用户,承载在Apache和C++开发的服务器上。因为当时腾讯有蛮低的ARPO值(每用户平均收入),每个用户贡献的收入是很少的,所以我们需要每台服务器尽量能够带来更多的价值,能服务更多的用户,就需要在Apache上做大量的优化。比如说把它的

its666的博客 2365

HDMI调试避坑指南:从AVI InfoFrame到通用控制包,这些DataIsland Packet细节千万别忽略

本文深入解析HDMI调试中DataIsland数据包的关键细节,包括AVI InfoFrame、通用控制包和音频时钟再生包(ACR)的配置与故障排查。通过实际案例和寄存器配置示例,帮助工程师快速定位显示异常、色彩失真和音频中断等问题,提升HDMI接口调试效率。

weixin_30897233的博客 636

Nginx学习

从Java到Nginx:我的探索之旅前言作为一名拥有四年Java开发经验的专科程序员,我的技术栈一直围绕着Java生态展开。然而,在实际工作中,我逐渐意识到,除了后端开发,了解前端和中间件等技术同样重要。最近,我开始学习Nginx,希望通过掌握它,提升自己在系统架构方面的理解。以下是我学习Nginx的一些心得体会,希望对同样处于学习阶段的朋友们有所帮助。一、为什么学习Nginx?(一)性能优势Nginx以其高性能、低资源消耗而闻名。

weixin_43753271的博客 757

Claude Skills 深度讲解

阶段 1:Function Call(2023)├─ 大模型可以调用外部工具├─ 问题:缺乏对任务的深度理解└─ 局限:工具调用简单线性阶段 2:MCP 上下文工程(2024)├─ 大模型有了更丰富的上下文和工具├─ 问题:仍然需要手动编写复杂的 Prompt└─ 局限:每次对话都需要重新加载上下文阶段 3:Claude Skills(2025)├─ 大模型有了「能力模块」的概念├─ 可以动态加载、组合、执行专门的工作流├─ 真正实现了「知识的模块化和复用」

u013134676的博客 1464

Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法

Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 目录 Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、实现步骤 六、关键代码 一、简单介绍 Unity中的一些基础知识点。 本节介绍,Asset Bundle 在 Unity中的使用,入门第一篇,如何AssetBundle标记,如何打包成AssetBundle的操作方法,有不对的地方欢迎指正。...

仙魁XAN 1万+

nginx的学习目录

本文提供了一份系统的Nginx学习路线图,分为六个阶段:从基础安装配置到核心功能实战,再到进阶优化与模块开发,最后涵盖运维排错和架构设计。每个阶段包含关键知识点,如静态资源服务、负载均衡、HTTPS配置、性能调优等,并推荐了官方文档、实验平台等学习资源。建议按阶段循序渐进学习,先完成基础Demo,再逐步深入高级功能,适合从入门到精通的系统学习参考。

一个UI、前端爱好者。 802

亿图机床采集数据

这个数控系统的英文名是HUST,在台湾知名度还可以,但大陆这边我做这么多年项目也只接触过屈指可数的几次,可见市场占有率并不大,联网采集不复杂。

若云流风的专栏 2492

Nginx学习途径

您可以尝试搭建和部署各种类型的网站和应用程序,并使用Nginx来处理静态和动态内容、负载均衡、反向代理等。您可以学习如何使用不同的指令和模块来配置Nginx服务器,以实现各种功能和性能优化。加入Nginx的社区和讨论组,与其他开发者和运维人员交流经验、分享问题和解决方案,这将有助于您更快地学习和掌握Nginx。通过以上方法,您可以进一步学习和掌握Nginx,成为一名熟练的Nginx开发者和运维人员。关注Nginx相关的社交媒体账号和技术社区,了解最新的动态和技术分享。学习Nginx配置指令的语法和用法。

moshshi6967的博客 404

全志V3S嵌入式驱动开发(编译器升级到7.5)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 看过我们文章的朋友都知道,前面为了做v3s的驱动,对linux kernel进行了两次升级。第一次升级时从4.10.y升级到4.14.y,另外一次升级是从4.14.y升级到5.2.y。这中间最主要的原因,就是为了驱动适配的需要,更新的内核可以对硬件驱动有更好的支持,架构也更合理。 如果说内核升级尚且可以理解,那为什么要对编译器升级呢?这里面,最重要的一点就是语言的升

嵌入式-老费,一个分享专业嵌入式知识的blog 1166

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道

在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。

邓邓子的博客 6134

Nginx 学习指南

Nginx(发音为 "engine x")是一个高性能的开源 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3 代理服务器。最初由 Igor Sysoev 于 2002 年开发,Nginx 以其高并发处理能力、低资源消耗和灵活的配置而闻名,广泛应用于静态文件服务、负载均衡、反向代理和 SSL/TLS 终止等场景。 Nginx 的核心特性包括: 事件驱动架构:采用异步非阻塞的事件驱动模型,能够高效处理大量并发连接。 模块化设计:支持动态加载模块,用户可以根据需求扩展功能。

不迁怒,不贰过。小知识,大智慧。 1653

嵌入式系统开发笔记96:将STM32CubeIDE设置为中文

本文介绍将STM32CubeIDE设置为中文的方法。

snmplink的博客 8538

简单的 nginx 学习

本文是学习nginx的简单记录,方便后续复习使用

qq_19342829的博客 1822

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

如何高效的学习 Nginx 源码,汲取养分?

Nginx 的功能点比较多,涉及到的新概念和设计思路对于新手也不是特别友好,我建议在了解一些了 Nginx 的一些基础知识之后,通过调试来学习 Nginx 源码。以下操作需要一些 gdb 调试知识,如果你不熟悉 gdb 调试,建议花几分钟学习一下。gdb 不难学,掌握常用命令即可,常用命令也不多,推荐《Debugging with GDB》这本书: 链接:提取码: xkqc。

张小方的博客 114

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Nginx学习导航

这里记录学习Nginx的思维导图,以后有空补上每一节的信息。

含江君 199

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文章1:关于Nginx学习计划

只有不断的坚持,才能够获得成功! ---yankai0219 2012/9/19日总结 前一段时间总结2012/9/12~2012/9/19 上周周三2012年9月12日开始正式接触Nginx学习。 从上周周三12日到周天16日都在安装Nginx+PHP+MySQL的开发环境。由于能力有限,未能将MySQL加入开发环境,仅仅安装Linux+Nginx+PHP。

www.keything.net 2985
上一篇: 【软考】系统集成项目管理工程师(十六)变更管理【1分】
下一篇: 【软考】系统集成项目管理工程师(十七)信息系统安全管理【2分】
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值