【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响应,拒绝访问请求的资源。

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

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

相关文章

SAR教程系列7——在cadence中用Spectrum工具FFT仿真ADC的ENOB、SNR等动态性能指标

首先在仿真之前,你得有一个ADC。然后是思考如何仿真的问题,如何加激励,如何使用相关工具查看仿真结果。假定你有一个可以仿真的ADC,大致经过下列步骤可以得到ADC的相关动态性能指标。 第一步:在ADC后面接一个理想的DA…

C语言编写Linux的Shell外壳

目录 一、输出命令行 1.1 了解环境变量 1.2 获取用户名、主机名、当前路径 1.3 缓冲区改进MakeCommandLine 二、获取用户命令 2.1 读取函数的选择 2.2 细节优化 2.3 返回值 三、指令和选项分割 3.1 strtok 函数 3.2 分割实现 四、执行命令 4.1 fork 方法 4.2 进…

HarmonyOS 应用开发之通过数据管理服务实现数据共享静默访问

场景介绍 典型跨应用访问数据的用户场景下,数据提供方会存在多次被拉起的情况。 为了降低数据提供方拉起次数,提高访问速度,OpenHarmony提供了一种不拉起数据提供方直接访问数据库的方式,即静默数据访问。 静默数据访问通过数据…

精彩解读:短链接应用全方位探究

title: 精彩解读:短链接应用全方位探究 date: 2024/4/2 17:44:50 updated: 2024/4/2 17:44:50 tags: 短链接定义映射算法原理简洁美化优势工作流程解析安全隐私保护商业营销应用技术趋势发展 1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务&#…

内网横向——域渗透之黄金票据复现

kerberos 协议 Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。 在Kerberos协议中主要是有三个角色的存在: 访问服务的Client(以下表述为Client 或者用…

redis链表结构和简单动态字符串(SDS)

1.双向链表 redis中的普通链表是双向链表。通过链表节点结构体可知有全驱节点和后继节点。 1.链表节点和链表 //adlist.h typedef struct listNode {struct listNode *prev; //前驱节点struct listNode *next; //后继节点void *value; //节点值 } list…

33-4 XXE漏洞 - xxe判断

判断是否存在 XXE 攻击漏洞: 1)有源码情况: 查找相关函数,如 simplexml_load_string(),用于检测 XML 是否会被解析。 2)无源码情况: 抓包检查报文是否包含 XML 传参,如果是 XML …

Java项目:86 springboot电影评论网站系统设计与实现

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本电影评论网站管理员和用户。 管理员功能有个人中心,用户管理,电影类别管理,电影信息管理,留…

CLIP 图文检索,相似度计算

CLIP 是OpenAI提出的神经网络,它可以从自然语言监督中有效地学习视觉概念。 CLIP 可以应用于任何视觉分类基准,只需提供要识别的视觉类别的名称,类似于 GPT-2 和 GPT-3 的“零样本”功能。 相关paper 用法可以参考github 这里举几个使用CLI…

时间管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

JVM 组成

文章目录 概要JVM 是 Java程序的运行环境(java二进制字节码的运行环境)JVM 的主要组成部分运行流程:程序计数器堆元空间方法区常量池运行时常量池 概要 JVM 是 Java程序的运行环境(java二进制字节码的运行环境) 好处&…

在linux下conda 创建虚拟环境失败的解决方法

报错内容一&#xff1a; Solving environment: failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/conda-forge/noarch/repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are…