个人工作笔记,备忘。

1. 需求描述

有两套前端代码,project01 和 project02,分别放在 nginx 的 html 目录下 有一套后端服务,两个前端项目都请求该服务,并且该后端服务进行多节点部署,通过 nginx 负载均衡确保高可用。 这里我将后端服务使用 docker 方式启动两个容器,端口分别是 8888 和 9999

2. 配置详情

#user nobody;

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

# 配置负载均衡服务

upstream demo {

# 配置负载均衡,weight 为权重,去掉则使用轮询策略

server localhost:8888 weight=1;

server localhost:9999 weight=2;

}

server {

listen 8080;

server_name localhost;

# nginx 默认根目录

location / {

root html;

index index.html index.htm;

}

# 前端 01 路径指定

location /project01 {

alias html/project01;

index index.html;

}

# 前端 02 路径指定

location /project02 {

alias html/project02;

index index.html;

}

# 前端请求后端

location /demo {

# 无负载均衡的写法

# proxy_pass http://localhost:8888/demo;

# 通过负载均衡实现

proxy_pass http://demo;

}

}

}

核心配置注释:

负载均衡配置

# 配置负载均衡服务

upstream demo {

# 配置负载均衡,weight 为权重,去掉则使用轮询策略

server localhost:8888 weight=1;

server localhost:9999 weight=2;

}

这里 demo 根据自己的请求信息进行定义,我这示例程序中,前端请求后端 url 是 http://localhost:8888/demo/xxx 所以此处使用 demoweight=1 weight=2 为权重配置,可以去掉,去掉后为轮询策略,轮流对服务节点进行请求。

前端项目目录配置

# 前端 01 路径指定

location /project01 {

alias html/project01;

index index.html;

}

由于有多个前端项目,不能直接放在 nginx 的 html 目录下,需要建立项目单独的目录,然后通过 alias 指定该目录,后面路径可以用相对路径,也可以用绝对路径。

调用负载均衡配置

# 前端请求后端

location /demo {

# 无负载均衡的写法

# proxy_pass http://localhost:8888/demo;

# 通过负载均衡实现

proxy_pass http://demo;

}

按照无负载均衡的写法,即 proxy_pass http://localhost:8888/demo 现在因为有多个节点,可以是多个 ip 或多个端口,因此需要通过示例中的写法,http:// + 之前配置的负载均衡中的 demo

3. 效果示例

通过指定不同 context 访问到不同的前端项目中(/project01 和 /project02) 负载均衡实现后端请求 这是权重为 1:2 时的请求结果 这是没有配置权重,使用默认轮询策略的请求结果

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。