nginx 实现负载均衡,横向扩展,保留源ip等

nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	
	upstream server {
		server 127.0.0.1:8090 weight=1;
		server 127.0.0.1:8070 weight=1;
	}
	
    server {
        listen       80;
        server_name  127.0.0.1;
        location /hello {
            proxy_pass http://server;
        }
    }
}

然后做两个除去端口不同都一致都项目,我这里用的spring boot的项目,直接打成jar包,然后启动

 

8070项目:

 

 

8090项目:

 

 

分别启动两个项目:

 

页面访问测试:

 

 

 

已经实现了横向拓展,中间还会涉及到一些ip问题,保留源ip之类的可以参考以下

这是项目获取端的,经过测试“x-forwarded-for” 就可以获取源ip

//		System.out.println("x-forwarded-for :"+request.getHeader("x-forwarded-for"));
//		System.out.println("X-Real-IP :"+request.getHeader("X-Real-IP"));
//		System.out.println("Proxy-Client-IP :"+request.getHeader("Proxy-Client-IP"));
//		System.out.println("WL-Proxy-Client-IP :"+request.getHeader("WL-Proxy-Client-IP"));
//		System.out.println("getRemoteAddr :"+request.getRemoteAddr());

如果你根据“x-forwarded-for”获取不到源ip,可以试下以下方法,当然程序端是要参考上面的写法的。

nginx配置

location /hello {
proxy_pass http://server;
proxy_set_header Host $host;#保留代理之前的host
proxy_set_header X-Real-IP $remote_addr;#保留代理之前的真实客户端ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;#在多级代理的情况下,记录每次代理之前的客户端真实ip
proxy_redirect default;#指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值
}

 这只是简单的横向扩展配置。我只是浅尝辄止,有更好的方式方法可以留言额,多谢阅读。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章