实操Nginx(4层代理+7层代理)+Tomcat多实例部署,实现负载均衡和动静分离
以下是一个基于Nginx实现4层代理(TCP)和7层代理(HTTP),同时结合Tomcat多实例的部署和负载均衡的示例:
- 安装Nginx和Tomcat(以Tomcat 9为例)。
- 配置Tomcat多实例,确保它们运行在不同的端口上。
- 配置Nginx作为4层代理(TCP)用于负载均衡Tomcat AJP端口。
- 配置Nginx作为7层代理(HTTP)用于负载均衡Tomcat的HTTP端口,同时实现动静分离。
以下是相关的配置文件示例:
Nginx 配置文件 (/etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
):
# 4层代理配置(TCP)
stream {
upstream tomcat_ajp {
server tomcat1_ip:ajp_port weight=5;
server tomcat2_ip:ajp_port weight=3;
}
server {
listen 8009; # 监听的代理端口
proxy_pass tomcat_ajp; # 指定上游服务器组
}
}
# 7层代理配置(HTTP)
http {
upstream tomcat_http {
server tomcat1_ip:http_port weight=5;
server tomcat2_ip:http_port weight=3;
}
server {
listen 80;
server_name your_domain.com;
# 静态文件处理
location ~* \.(jpg|jpeg|png|css|js|ico|html)$ {
root /path/to/static/files;
expires 30d;
}
# 所有其他请求代理到Tomcat
location / {
proxy_pass http://tomcat_http; # 指定上游服务器组
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
确保替换 tomcat1_ip
, ajp_port
, http_port
, /path/to/static/files
, 和 your_domain.com
为实际的IP地址、端口号和路径。
以上配置将实现以下功能:
- 对于TCP流量(AJP端口),Nginx作为4层代理负责负载均衡到后端的Tomcat AJP连接。
- 对于HTTP流量,Nginx作为7层代理负责负载均衡到后端的Tomcat HTTP连接,同时将静态文件请求直接提供给客户端,减少Tomcat的负载。
确保在配置文件修改后重启Nginx以应用更改。
评论已关闭