NGINX+TOMCAT配置负载均衡

本文介绍如何配置Nginx与Tomcat实现负载均衡,包括Java JDK、Nginx及Tomcat的安装步骤,Tomcat端口配置及发布目录调整方法,并给出Nginx配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx+tomcat是目前主流的 Java web 架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下:

1、Java JDK安装:

 
  1. #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz   
  2.     
  3. tar -xzf  jdk-7u25-linux-x64.tar.gz  ;mkdir -p /usr/java/ ;mv jdk1.7.0_25/ /usr/java/ 下.   
  4.     
  5. #然后配置环境变量,这样可以任何地方引用jdk,如下配置:   
  6.     
  7. #vi /etc/profile 最后面加入以下语句:   
  8.     
  9. export JAVA_HOME=/usr/java/jdk1.7.0_25   
  10.     
  11. export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  
  12.     
  13. export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin  
  14.     
  15. #source /etc/profile   #使环境变量马上生效   
  16.     
  17. #java  --version    #查看java版本,看到jdk1.7.0_25版本即代表java jdk安装成功。 

2、Nginx安装:

 
  1. wget http://nginx.org/download/nginx-1.2.6.tar.gz   
  2.     
  3. useradd www   
  4.     
  5. tar zxvf nginx-1.2.6.tar.gz   
  6.     
  7. cd nginx-1.2.6/   
  8.     
  9. ./configure --user=www --group=www --prefix=/usr/local/nginx  
  10.  \--with-http_stub_status_module --with-http_ssl_module   
  11.     
  12. make && make install  
  13.     
  14. #Nginx安装完毕,然后使用命令:/usr/local/nginx/sbin/nginx -t 测试OK,代表nginx安装成功。   
  15.     
  16. /usr/local/nginx/sbin/nginx 回车启动nginx,可以通过访问http://ip/看到nginx默认页面。 

3、Tomcat安装:

 
  1. #官方网站下载tomcat 6.0.30或者其他版本:   
  2.     
  3. cd /usr/src  && tar xzf  apache-tomcat-6.0.30.tar.gz   
  4.     
  5. #直接解压就可以使用,解压完成执行,同时拷贝两个tomcat,命名为tomcat1 tomcat2   
  6.     
  7. mv apache-tomcat-6.0.30  /usr/local/tomcat1  
  8.     
  9. cp /usr/local/tomcat1  /usr/local/tomcat2 -r   
  10.     
  11. #分别修改tomcat1和tomcat2 端口,这里有三个端口需要修改,分别如下:   
  12.     
  13. shutdown 端口:8005  主要负责启动关闭.   
  14.     
  15. ajp端口:8009 主要负责通过ajp均衡(常用于apache和tomcat整合)   
  16.     
  17. http端口:8080 可以通过web页面直接访问(nginx+tomcata整合)   
  18.     
  19. #注* 如果tomcat1三个端口分别为:8005 8009 8080 ,那么tomcat2端口在此基础上都+1,即为:8006 8010 8081   
  20.     
  21. #一台服务器上,端口不能重复,否则会报错。   
  22.     
  23. #修改完端口后,然后启动两个tomcat,启动命令为:   
  24.     
  25. #如何提示没有这个文件或者权限不足,需要tomcat 的bin目录对sh文件赋予执行权限:chmod o+x   *.sh   
  26.     
  27. /usr/local/tomcat1/bin/startup.sh   
  28.     
  29. /usr/local/tomcat2/bin/startup.sh   
  30.     
  31. #启动后,使用netstat -tnl 可以看到6个端口,即代表tomcat1 tomcat2成功启动。你可以使用http://ip:8080  http://ip:8081访问tomcat默认页面。  

#如果需要修改tomcat发布目录为自己制定的目录,需要做如下调整,创建两个发布目录:

 
  1. mkdir -p /usr/webapps/{www1,www2} 

编辑vi /usr/local/tomcat1/conf/server.xml 在最后</Host>前一行加下内容:

 
  1. <Context  path="" docBase="/usr/webapps/www1" reloadable="false"/> 

2.编辑vi /usr/local/tomcat2/conf/server.xml 在最后</Host>前一行加下内容:

 
  1. <Context  path="" docBase="/usr/webapps/www2" reloadable="false"/> 

3.tomcat1发布目录内容:

 
  1. <html>   
  2. <body>   
  3. <h1>TOMCAT_1 JSP Test Page</h1>   
  4. <%=new java.util.Date()%>   
  5. </body>   
  6. </html> 

4.tomcat2发布目录内容:

 
  1. <html>   
  2. <body>   
  3. <h1>TOMCAT_2 JSP Test Page</h1>   
  4. <%=new java.util.Date()%>   
  5. </body>   
  6. </html> 

然后访问http://ip:8080、8081查看测试内容。

5、Nginx+tomcat整合:

整合主要是修改nginx.conf配置,给一个完整的nginx.conf线上配置,部分参数可以自己根据实际需求修改:

 
  1. user www www;   
  2. worker_processes 8;   
  3. pid /usr/local/nginx/nginx.pid;   
  4. worker_rlimit_nofile 102400;   
  5. events   
  6. {   
  7. use epoll;   
  8. worker_connections 102400;   
  9. }   
  10. http   
  11. {   
  12.   include       mime.types;   
  13.   default_type  application/octet-stream;   
  14.   fastcgi_intercept_errors on;   
  15.   charset  utf-8;   
  16.   server_names_hash_bucket_size 128;   
  17.   client_header_buffer_size 4k;   
  18.   large_client_header_buffers 4 32k;   
  19.   client_max_body_size 300m;   
  20.   sendfile on;   
  21.   tcp_nopush     on;   
  22.       
  23.   keepalive_timeout 60;   
  24.       
  25.   tcp_nodelay on;   
  26.   client_body_buffer_size  512k;   
  27.     
  28.   proxy_connect_timeout    5;   
  29.   proxy_read_timeout       60;   
  30.   proxy_send_timeout       5;   
  31.   proxy_buffer_size        16k;   
  32.   proxy_buffers            4 64k;   
  33.   proxy_busy_buffers_size 128k;   
  34.   proxy_temp_file_write_size 128k;   
  35.       
  36.   gzip on;   
  37.   gzip_min_length  1k;   
  38.   gzip_buffers     4 16k;   
  39.   gzip_http_version 1.1;   
  40.   gzip_comp_level 2;   
  41.   gzip_types       text/plain application/x-javascript text/css application/xml;   
  42.   gzip_vary on;   
  43.       
  44. ###2012-12-19 change nginx logs   
  45. log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '  
  46.               '$status $body_bytes_sent "$http_referer" '  
  47.               '"$http_user_agent"  $request_time $remote_addr';   
  48.                   
  49. upstream web_app {   
  50.  server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;   
  51.  server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;   
  52. }   
  53.     
  54. ####chinaapp.sinaapp.com   
  55. server {   
  56.     listen 80;   
  57.     server_name  chinaapp.sinaapp.com;   
  58.     index index.jsp index.html index.htm;   
  59.     #发布目录/data/www   
  60.     root  /data/www;   
  61.         
  62.     location /   
  63.     {   
  64.     proxy_next_upstream http_502 http_504 error timeout invalid_header;   
  65.     proxy_set_header Host  $host;   
  66.     proxy_set_header X-Real-IP $remote_addr;   
  67.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
  68.     proxy_pass http://web_app;   
  69.     expires      3d;   
  70.     }   
  71.      
  72.   }   
  73.     

#注* server段 proxy_pass定义的web_app需要跟upstream 里面定义的web_app一致,否则server找不到均衡。    

#如上配置,nginx+tomcat反向代理负载均衡配置完毕,如果要做动静分离,只需要在nginx添加如下配置就OK了。

 
  1.  #配置Nginx动静分离   
  2.    
  3. location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$   
  4.    
  5. {   
  6.    
  7. root /data/www;   
  8.    
  9. #expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力   
  10.    
  11. expires      3d;   
  12.    
基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值