【windows】--- nginx 超详细安装并配置教程

目录

  • 一、下载 nginx
  • 二、安装
  • 三、查看是否安装成功
  • 四、配置
  • 五、关闭 nginx
  • 六 负载均衡
  • 七 配置静态资源
    • 1. 根目录下的子目录(root)
    • 2.完全匹配(alias)
  • 刷新配置(不必重启nginx)
  • 八、后端鉴权

一、下载 nginx

打开 nginx 的官网:nginx.org/ ,下载最新的稳定版本

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

二、安装

1.打开下载的文件位置,然后进行
2.打开 nginx.exe 文件,会出现一个一闪而过的页面

在这里插入图片描述

3.然后打开任意一个浏览器,输入 localhost,出现下面的页面,则安装成功。

在这里插入图片描述

三、查看是否安装成功

1. win+r打开控制台 c
2. 进入到nginx安装的目录
3. 输入 nginx 
4. 如果安装不成功就会反馈错误
5. 出现的错误如果是:[emery] blind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)  就是80端口被其他程序占用。
6. 查看80端口占用的程序 关闭并重新执行nginx.exe 文件

四、配置

nginx的配置文件是conf目录下的nginx.conf
默认配置的nginx监听的端口为80

在这里插入图片描述

当修改了 nginx的配置文件nginx.conf 时,不需要关闭 nginx 后重新启动 nginx,只需要执行命令 nginx -s reload 即可让改动生效

五、关闭 nginx

(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用 taskkill taskkill /f /t /im nginx.exe

六 负载均衡

1.理解:通过修改 nginx 的配置文件 nginx.conf 实现当到访问nginx代理服务器时跳转到指定服务器
2.即当我们依然输入http://localhost:80 时,请求会跳转到我们配置的服务器

在这里插入图片描述

我们可以配置多个目标服务器

在这里插入图片描述
当服务器 ocalhost:8080 挂掉时,nginx能将请求自动转向服务器 192.168.101.9:8080。上面还加了一个 weight 属性,此属性表示各服务器被访问到的权重,weight 越高被访问到的几率越高

七 配置静态资源

1. 根目录下的子目录(root)

比如url:http://localhost/images/sta1/11.jpg 
如果按下图进行配置,则url路径中的/images代表是D:/IEMS/images下的子目录
重定向到图片时路径就会拼接为 D:/IEMS/images/images/sta1/11.jpg
1.将静态资源(如jpg|png|css|js等)放在如下配置的 D:/IEMS/images 目录下
2.然后在 nginx 配置文件中做如下配置(注意:静态资源配置只能放在 location / 中)
3.浏览器中访问 http://localhost:80/1.png 即可访问到 D:/IEMS/images 目录下的 1.png 图片
location /images {
    root   D:/IEMS/images;
    index  index.html index.htm;
}

2.完全匹配(alias)

1.比如url:http://localhost/images/sta1/11.jpg  
如果按下图进行配置,则url路径中的/images可理解为仅仅是一个代表戳
以下是使用 ^~ 前缀进行定义,只有 url完全匹配 "/images/" 开头时才会执行图片重定向,而不会匹配其他包含 "/images/" 的 url
使用 alias 指令可以确保 Nginx"/images" 开头的 url映射到指定的文件目录,而不会将 "images" 视为根目录下的子目录

2. 比如url:http://localhost/images/sta1/11.jpg 
就会重定向到  D:/IEMS/images/sta1/11.jpg下,重定向到图片时路径时后面就不会拼接/images,
如果/images后还有
location ^~ /images/ {
    alias   D:/IEMS/images/;
    index  index.html index.htm;
}

刷新配置(不必重启nginx)

当修改了 nginx的配置文件nginx.conf 时,不需要关闭 nginx 后重新启动 nginx
只需要执行命令 nginx -s reload 即可让改动生效

八、后端鉴权

在以下这个配置中,/images/目录下的资源将受到保护
当用户尝试访问这些资源时,Nginx会向后端发送一个认证请求
后端应用程序需要返回一个HTTP 200响应表示认证成功,或者其他响应码表示认证失败。
注意:需要注意的是,这只是一个简单的示例,您需要根据您的具体需求来配置Nginx和后端应用程序。确保后端应用程序能够处理认证请求,并根据您的业务逻辑来返回相应的响应。
location ^~ /images/ {
    internal;
    alias   D:/IEMS/images/;
    index  index.html index.htm;

    # 向后端发送认证请求
    auth_request /auth;

    # 根据后端应用程序返回的响应来决定是否允许访问
    auth_request_set $auth_status $upstream_status;
    auth_request_set $auth_username $upstream_http_x_username;
    if ($auth_status != 200) {
        return 403;
    }
}

location = /auth {
    internal;
    proxy_pass http://backend_server/auth;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
    proxy_set_header X-Username $remote_user;
}
这段配置代码实现了基于后端应用程序的认证逻辑。让我逐步解释它的执行逻辑和过程:
1. location = /auth:这是一个内部定位块,用于处理认证请求。它的含义是只有当请求的 URI 等于 "/auth" 时才会匹配。因为我们希望认证请求是内部的,不希望外部直接访问,所以使用了internal指令。
2. proxy_pass http://backend_server/auth;:这里配置了代理转发,将认证请求发送给后端服务器的/auth端点。当Nginx收到来自客户端的认证请求时,它会将该请求发送到后端服务器上的/auth端点,并等待后端应用程序的响应。
3. proxy_pass_request_body off;:这个指令告诉Nginx不要传递认证请求的请求体,因为我们只需要URI和头部信息。
4. proxy_set_header Content-Length "";:这个指令将Content-Length头部设置为空,因为我们已经关闭了传递请求体。
5. proxy_set_header X-Original-URI $request_uri;:这个指令将客户端请求的原始URI存储在X-Original-URI头部中,以便后端应用程序可以知道客户端请求的是哪个资源。
6. proxy_set_header X-Username $remote_user;:这个指令将客户端的用户名存储在X-Username头部中,以便后端应用程序可以知道是哪个用户在尝试访问资源。
7. auth_request /auth;:这行代码在 /images/ 路径下的位置块中执行,当客户端请求访问图片资源时触发,向后端发送认证请求。
8. auth_request_set $auth_status $upstream_status;:这行代码用于设置变量 $auth_status,存储上游服务器(即后端服务器)返回的状态码。这个变量表示认证请求的结果。
9. auth_request_set $auth_username $upstream_http_x_username;:这行代码用于设置变量 $auth_username,存储上游服务器返回的 X-Username 头部中的用户名信息。
10. if ($auth_status != 200):这个条件判断用于检查认证请求的结果。如果认证失败,即后端应用程序返回的状态码不是200,那么Nginx会返回403 Forbidden响应,拒绝访问请求的资源。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S基于containerd做容器从harbor拉取镜

实现创建pod时,通过指定harbor仓库里的镜像来运行pod 检查:K8S是不是用containerd做容器运行时,以及containerd的版本是不是小于1.6.22 kubectl get nodes -owide1、如果containerd小于 1.6.22,需要先升级containerd 先卸载旧的…

力扣Lc28---- 557. 反转字符串中的单词 III(java版)-2024年4月06日

1.题目描述 2.知识点 1)用StringBuilder的方法 实现可变字符串结果 最后返回的时候用.toString的方法 2)在Java中使用StringBuilder的toString()方法时,它会返回StringBuilder对象当前包含的所有字符序列的字符串表示。 在我们的例子中,sb是一个Stri…

初心护蕾 珍视青春

(通讯员:赵灿飞 图:杨美、孙红浪) 为进一步加强未成年人合法权益保护工作,提高未成年人的自我安全防范意识和能力,培养未成年人正确的性观念和自我保护意识,促进健康的人际关系&#xff0c…

Debian安装宝塔教程

宝塔面板是一款非常受欢迎的服务器管理软件,它以其强大的功能、简洁的操作界面和丰富的应用生态而闻名。宝塔面板不仅能够帮助用户轻松管理服务器,还能够提供网站、数据库、FTP、备份等多种服务,是服务器管理的得力助手。 宝塔面板的特色 1.…

【Spring】之AOP详解

AOP 什么是AOP? AOP:Aspect Oriented Programming,面向切面编程。 切面指的是某一类特定问题,因此面向切面编程也可以理解为面向特定方法编程。例如,在任何一个系统中,总有一些页面不是用户可以随便访问…

设置你的第一个React应用

目录 一、React入门 1.1 你好React 1.2 创建React 1.3 应用结构 二、总结 2.1 定义组件 2.2 组件源码 三、组件详解 注意事项 3.1 组件三部曲 3.2 组件通信 —— props 3.3 对象数组迭代 —— map() 3.4 事件处理 3.5 钩子函数 —— useState() 初次学习最终效果…

Cortex-M7 内存映射模型

1 前言 如图1所示, Cortex-M7最大支持4GB的内存寻址,并对内存映射(memory map)做了初步的规定,将整个内存空间划分为了多个内存区域(region)。每个内存区域有着既定的内存类型(memory type)和内存属性(memory attribute),这两者决…

AI - ComfyUI过程图(3)

ComfyUI 比 Stable Diffusion WebUI更灵活,而且可以看到处理过程,能增加节点进行后续处理,因而更强大。 看看下面一张图的变化,一开始惨不忍睹。 使用 Ultimate SD Upscale 提升分辨率 超精后脸部有改善: 脸部比较…

递归实现指数型枚举(acwing)

题目描述: 从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式: 输入一个整数 n。 输出格式: 每行输出一种方案。 同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。 对于没有…

一周年纪念

文章目录 机缘:命运之门收获---知识之心日常---灵魂之窗成就 — 自我之光憧憬 — 未来之路 机缘:命运之门 “人生是由一连串的选择组成,而真正的成长,往往始于最具挑战性的决定。” —— 这句话恰如其分地概括了我选择跨考计算机的…

自动驾驶执行层 - 线控底盘基础原理(非常详细)

自动驾驶执行层 - 线控底盘基础原理(非常详细) 附赠自动驾驶学习资料和量产经验:链接 1. 前言 1.1 线控的对象 在自动驾驶行业所谓的“感知-定位-决策-执行”的过程中,在末端的执行层,车辆需要自主执行决策层所给出的指令,具体…

2024最全ChatGPT支持GPTs使用教程+Prompt应用预设词教程

使用指南 直接复制使用 可以前往已经添加好Prompt预设的AI系统测试使用(可自定义添加使用) https://ai.sparkaigf.com 现已支持GPTs 雅思写作考官 我希望你假定自己是雅思写作考官,根据雅思评判标准,按我给你的雅思考题和对应…

【多模态融合】MetaBEV 解决传感器故障 3D检测、BEV分割任务

前言 本文介绍多模态融合中,如何解决传感器故障问题;基于激光雷达和相机,融合为BEV特征,实现3D检测和BEV分割,提高系统容错性和稳定性。 会讲解论文整体思路、模型框架、论文核心点、损失函数、实验与测试效果等。 …

Python 基于列表实现的通讯录管理系统(有完整源码)

目录 通讯录管理系统 PersonInformation类 ContactList类 menu函数 main函数 程序的运行流程 完整代码 运行示例 通讯录管理系统 这是一个基于文本的界面程序,用户可以通过命令行与之交互,它使用了CSV文件来存储和读取联系人信息,这…

浅谈Redis和一些指令

浅浅谈一谈Redis的客户端 Redis客户端 Redis也是一个客户端/服务端结构的程序。 MySQL也是一个客户端/服务端结构的程序。 Redis的客户端也有多种形态 1.自带命令行客户端 redis-cli 2.图形化界面的客户端(桌面程序,web程序) 像这样的图形…

3d代理模型怎么转换成标准模型---模大狮模型网

在当今的虚拟世界中,3D建模技术被广泛运用于游戏开发、电影制作、工业设计等领域。在3D建模过程中,有时会遇到需要将代理模型转换成标准模型的情况。模大狮将从理论和实践两方面,介绍如何将3D代理模型转换成标准模型,以帮助读者更…

推荐一款免费开源引擎:批量识别PDF及图片表格及文字(可本地化部署)

在数字化时代,信息的快速处理和高效管理成为企业和个人的重要需求。表格文字识别技术作为一项关键的技术,能够将纸质或图片中的表格数据快速转换为结构化的电子数据,极大地提高了数据处理的效率和准确性。本文将对思通数科的表格文字识别技术…

MySQL复制拓扑2

文章目录 主要内容一.配置基本复制结构1.分别在三台主机上停止mysqld服务,并对状态进行确认:代码如下(示例): 2.对三个MySQL服务器的配置文件分别进行编辑,在[mysqld] 选项组中添加以下红色条目:3.在数据目…

淘宝优惠券领取软件叫什么?

草柴返利APP是一款淘宝优惠券领取软件。用户可以通过草柴淘宝优惠券领取软件轻松查找领取淘宝大额隐藏优惠券,领取成功后再购物可享受券后价优惠。同时,通过草柴APP领券购买成功,确认收货后再回到草柴APP提取购物返利,享受双重省钱…

【自用笔记】【大数据】

1 mapreduce (1)Map任务的数量:由输入数据的大小决定的,如文件数量和大小、HDFS块大小以及FileInputFormat的设置等。每个MapSlot可以运行一个Map任务 (2)Reduce任务的数量(分区数)&…