一个 Nginx + Apache + Netty 的web服务架构与实现
最近的一个web service 项目中用到了一个 Nginx (负责均衡器)+ Apache (请求转发 80 → 8080, 记录相关日志)+ Netty (应用服务器)的架构。
如下图:
该架构很简单,就是 一个公司网关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;
}
/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服务器3