目录

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

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: