nginx主要是用来做反向代理的,kafka主要用来做消息队列缓存与分发。
下面在linux上简单迁移使用一下,大体架构如下图。
1、nginx
如果不考虑在nginx上加载模块的话,那在ubuntu上安装nginx直接apt就可以了。但由于我们后面需要nginx将部分消息转发至kafka,因此nginx需要以重新编译的方式装载第三方模块。这里与kafka可以选择直接装载kafka模块,也可以利用lua模块来完成;本文选择第二种方法,即先添加lua模块编译,再在lua中利用lua-resty-kafka进行请求。
参考
https://blog.csdn.net/qq_27156945/article/details/104019069
完成安装后就可以书写nginx配置文件了,可以看到我们根据url来进行转发,其中nginx对外端口为80:
【1】/TouhouProject为主功能web,转发至apache服务器,2台作负载均衡(虚拟机和宿主机)
【2】/img为静态资源,可以直接从nginx静态资源目录读取返回
【3】/toKafka为kafka队列测试,这里调用lua脚本将头部信息加入kafka队列
worker_processes auto;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events
{
worker_connections 768;
multi_accept on;
}
http
{
kafka/?.lua;;";
lua_package_path "/usr/local/lua-resty-kafka-master/lib/?.lua;;";
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application