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

Tan.]der 2024-06-13 15:37:03 阅读 76

目录

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

一、下载 nginx

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

在这里插入图片描述

在这里插入图片描述

二、安装

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

在这里插入图片描述

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

在这里插入图片描述

三、查看是否安装成功

1. win+r打开控制台 c2. 进入到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响应,拒绝访问请求的资源。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。