一个 Nginx + Apache + Netty 的web服务架构与实现


最近的一个web service 项目中用到了一个 Nginx (负责均衡器)+ Apache (请求转发 80 → 8080, 记录相关日志)+ Netty (应用服务器)的架构。

如下图:

一个 Nginx + Apache + Netty 的web服务架构与实现



该架构很简单,就是 一个公司网关v + 两台 Nginx 负载均衡服务器 + 三台物理主机构成的服务器集群。

每台物理主机都装有 Apache 服务器监听80端口,一个Netty应用服务器监听8080端口。

而且,物理主机仅仅开放80端口,所有其他端口上的的服务(如:8080端口)都需要通过监听80端口的Apache服务器转发。

这样做的目的,估计是为了安全以及方便infra组的同学们监控。


具体的配置方法如下:


公司网关v

infra部门的同学已经配置好相应的proxy, 我们无权更改。


Nginx负载均衡器

Nginx1 :

/etc/nginx/conf.d/upstreams.conf

upstream cbtcapi{

        least_conn;

        server app1.host;

        server app2.host;;

        server app3.host;

}

/etc/nginx/extra.d/cbt-api.rakuten.co.jp.conf

location ~* /(url_pattern1)|url_pattern2)|url_pattern3) {

        proxy_set_header Host v_host;

        proxy_pass http://cbtcapi;

}


Nginx2 :

-- 与Nginx1 完全一致。


Apache服务器

Apache服务器1

/etc/httpd/conf.extra.d/app1.conf

<VirtualHost *:80>

...........

ProxyPass / http://app1.host:8080/ keepalive=On retry=0

ProxyPassReverse / http://app1.host:8080/

...........

</VirtualHost>


Apache服务器2

--与Apache 服务器1完全一致

Apache服务器3

--与Apache 服务器1完全一致