Nginx负载均衡策略 - 轮询

使用Idea快速创建一个Spring Boot Web应用程序,作为被Nginx反向代理的后端服务集群,
核心代码如下

@RestController
@RequestMapping("/")
public class NginxController {
    @GetMapping("/")
    public String hello(HttpServletRequest request) {
        String host = request.getHeader("Host");
        String realIp = request.getHeader("X-Real-IP");
        String port = System.getProperty("server.port");
        return "hello nginx,I'm " + port + " Server.nginx host is " + host + ",your realIp is " + realIp;
    }
}

分别在8881、8882、8883端口启动这个Java Web程序
这里就不放入后台执行了,用Xshell打开三个终端吧

$ java -Dserver.port=8881 -jar nginx-demo-0.0.1-SNAPSHOT.jar
$ java -Dserver.port=8882 -jar nginx-demo-0.0.1-SNAPSHOT.jar
$ java -Dserver.port=8883 -jar nginx-demo-0.0.1-SNAPSHOT.jar

配置nginx的配置文件

$ vim $NGINX_HOME/conf/nginx.conf
worker_processes  auto;
events {
    use  epoll;
    worker_connections  65535;
}
http {
    upstream aidan.org{
        server 127.0.0.1:8881;
        server 127.0.0.1:8882;
        server 127.0.0.1:8883;
    }
    server {
        listen       80;
        server_name  aidan.org;
        location / {
            proxy_pass  http://aidan.org;
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;
        }
    }
}

重新加载nginx配置

$ nginx -s reload

配置host文件

$ vim /etc/hosts
127.0.0.1   aidan.org

使用curl测试nginx基于轮询的负载均衡

[root@localhost ~]# curl aidan.org
hello nginx,I'm 8881 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org
hello nginx,I'm 8882 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org
hello nginx,I'm 8883 Server.nginx host is aidan.org,your realIp is 127.0.0.1

发现端口号的变化了没?
使用浏览器测试一下nginx转发客户端的真实IP(192.168.1.162)
我的win10 host配置没有生效,192.168.1.2是我的虚拟机IP,win10IP是192.168.1.162

注意事项

1 nginx缺省配置就是轮询策略
2 nginx负载均衡支持http和https协议,只需要修改proxy_pass后协议即可
3 nginx支持FastCGI、uwsgi、SCGI、memcached的负载均衡:只需将proxy_pass改为fastcgi_pass、uwsgi_pass、scgi_pass、memchached_pass即可。

小结

nginx.conf文件中轮询负载均衡的配置是重点
另外配置中还演示了nginx添加请求头的方式传递客户端的真实IP给后端服务器实例
nginx配置文件的风格:

  • 缩进使用4个空格
  • 键值之间空2个空格
  • 前置花括号{前空1个空格
  • 其它按模板配置就好
发布了32 篇原创文章 · 获赞 0 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/h13140995776/article/details/101130733