nginx反向代理与负载均衡实例(Springboot+Idea)
1、在idea中新建一个springboot工程
接下来删除src目录,创建多模块项目。
2、创建两个子模块
创建子模块demo1,在java目录下分别创建程序入口App.java和HelloController.java源文件
App.java源代码:
package com.zut;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
HelloController.java源代码:
package com.zut.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("")
public class HelloController {
@Value("${server.port}")
private String port;
@RequestMapping("")
public String hello()
{
return "该服务器的端口是:"+port;
}
@RequestMapping("/hello")
public String hello2()
{
return "该服务器的端口是:"+port+"我是hello";
}
}
接下来在resoures目录下创建一个applicaton.yml配置文件
server:
port: 8081
创建子模块demo2与demo1完全一样,唯一不同的是application.yml文件中的端口号,因为后面需要同时开启两个模块,避免端口占用。
server:
port: 8080
3、修改nginx配置文件
在nginx的conf目录中,找到nginx.conf
在#gzip on 下面增加以下配置
#配置负载均衡的两台服务器,nginx会轮询一下两个服务器
upstream balance{
server 127.0.0.1:8080; #对应demo1项目的tomcat端口
server 127.0.0.1:8081; #对应demo2项目的tomcat端口
}
server {
listen 80;
server_name localhost; #待会在浏览器中输入localhost
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://balance; #反向代理核心配置,该配置说明当输入
#root html; #localhost时会到balance对应的配置服务器中
index index.html index.htm;
}
4、然后双击nginx.exe,启动nginx,同时启动demo1,demo2
说明项目demo1,demo2启动成功,可以在任务管理器中查看nginx是否启动成功
4、运行结果
在浏览器中输入localhost
当刷新页面时发现走到了8081端口,说明通过nginx的负载均衡机制,交叉转发服务到两个不同的服务器中
这就是最基本的负载均衡的例子。通过nginx的代理功能将拦截的请求通过upstream的规则进行转发。