Nginx+tomcat实现动静分离_第1页
Nginx+tomcat实现动静分离_第2页
Nginx+tomcat实现动静分离_第3页
Nginx+tomcat实现动静分离_第4页
Nginx+tomcat实现动静分离_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最近公司的项目都完成了,工作很清闲,处理每天的日常巡检工作外,我还整理了一下以前学习的笔记,现在把我的笔记share给大家。1. 动静分离的实现思路动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。1.1 静态资源部署至CDN上我们的方案是直接将静态资源全部存放在CDN服务器上。因为之前项目中的JavaScript,CSS以及img文件都是存放在CD

2、N服务器上,将HTML文件一起存放到CDN上之后,可以将静态资源统一放置在一种服务器上,便于前端进行维护;而且用户在访问静态资源时,可以很好利用CDN的优点CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。1.2 后端API提供数据后端应用提供API,根据前端的请求进行处理,并将处理结果通过JSON格式返回至前端。目前应用主要采用Java平台开发,因此应用服务器主要是Tomcat服务器,现在也开始有部分应用采用 node进行开发,应用服务器也开始使用node服务器。1.3 前后端域名动静分离因为静态资源和应用

3、服务分别部署在不同的服务器上,因此会面临域名策略的选择。相同域名采用相同域名下,用户请求api时可以避免跨域所带来的问题,相对开发更为快速,工作量也相对小一些。 不同域名前后端采用不同域名时,需要前后端开发时兼容跨域请求的情况,开发量相对上一种会稍多一些。解决跨域方式最常用的方式就是采用JSONP,还有一种解决方式使用CORS(HTTP访问控制)允许某些域名下的跨域请求。目前在我们的项目中JSONP方式更多,CORS因为需要浏览器支持,因此只会在APP内嵌HTML5,且需要POST方式时中使用。采用不同域名的方式优点也是非常明显的,不同域名采用两个域名服务器,不同的域名服务器根据请求的不同采用

4、不同的负载均衡策略;而且不同域名也可以邮箱方式前端携带过多的Cookie。2. 动静分离的实现优缺点2.1 优点api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。2.2 缺点开发量变大,前后端交流成本升高

5、:后端api返回的数据,往往是有自身逻辑在内的,比如返回数据中的包含status(1-处理中,2-处理成功,3-处理失败),前端需要理解status的不同含义,对应的前端操作需要理解(如,status =1 or status = 2,不可提交)。在业务高速发展时需要慎重考虑:因为开发量变大,如果在业务开始阶段,缺乏前端又要求开发速度很快,就需要慎重考虑这种方式的实现成本对业务发展的影响。3. 实现案例这个是在公司做的内嵌到app里的HTML5页面References一、什么是动静分离本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片、html等静态的文件,tomc

6、at处理jsp、do等动态文件。二、结构图 三、安装1、安装、配置nginx下载nginx与pcre(如果需要使用正则,需要安装pcre)wget wget 安装pcre1. tar zxvf pcre-8.10.tar.gz 2. cd pcre-8.10/ 3. ./configure 4. make 5. make install cd .安装nginx1. tar zxvf nginx-0.8.46.tar.gz 2. cd nginx-0.8.46/ 3. ./configure -user=www -group=www -prefix=/usr/local/nginx -with-

7、http_stub_status_module -with-http_ssl_module 4. make 5. make install nginx.conf配置1. user www www; 2. 3. worker_processes 8; 4. 5. error_log /usr/local/nginx/logs/nginx_error.log crit; 6. 7. pid /usr/local/nginx/nginx.pid; 8. 9. worker_rlimit_nofile 65535; 10. 11. events 12. 13. use epoll; 14. worke

8、r_connections 65535; 15. 16. 17. http 18. 19. include mime.types; 20. default_type application/octet-stream; 21. 22. #charset gb2312; 23. 24. server_names_hash_bucket_size 128; 25. client_header_buffer_size 32k; 26. large_client_header_buffers 4 32k; 27. client_max_body_size 8m; 28. 29. sendfile on;

9、 30. tcp_nopush on; 31. 32. keepalive_timeout 60; 33. 34. tcp_nodelay on; 35. 36. fastcgi_connect_timeout 300; 37. fastcgi_send_timeout 300; 38. fastcgi_read_timeout 300; 39. fastcgi_buffer_size 64k; 40. fastcgi_buffers 4 64k; 41. fastcgi_busy_buffers_size 128k; 42. fastcgi_temp_file_write_size 128k

10、; 43. 44. gzip on; 45. gzip_min_length 1k; 46. gzip_buffers 4 16k; 47. gzip_http_version 1.0; 48. gzip_comp_level 2; 49. gzip_types text/plain application/x-javascript text/css application/xml; 50. gzip_vary on; 51. 52. #limit_zone crawler $binary_remote_addr 10m; 53. 54. server 55. 56. listen 80; 5

11、7. server_name ; #的ip为76 58. index index.html index.htm index.php; 59. root /usr/local/nginx/html; 60. 61. #limit_conn crawler 20; 62. 63. location .*.(php|php5)?$ 64. 65. #fastcgi_pass unix:/tmp/php-cgi.sock; 66. fastcgi_pass :9000; 67. fastcgi_index index.php; 68. include fastcgi

12、.conf; 69. 70. 71. location .*.(gif|jpg|jpeg|png|bmp|swf)$ #所以的静态文件人gif、jpg等都在本地打开,存放的目录为/usr/local/nginx/html,保存时间为30天 72. 73. root /usr/local/nginx/html; 74. expires 30d; 75. 76. location (.jsp)|(.do)$ #所以jsp、do的动态请求都交给后面的tomcat处理 77. 78. proxy_pass 68:8080; 79. proxy_redirect off;

13、80. proxy_set_header HOST $host; 81. proxy_set_header X-Real-IP $remote_addr; 82. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 83. client_max_body_size 10m; 84. client_body_buffer_size 128k; 85. proxy_connect_timeout 90; 86. proxy_send_timeout 90; 87. proxy_read_timeout 90; 88. proxy

14、_buffer_size 4k; 89. proxy_buffers 4 32k; 90. proxy_busy_buffers_size 64k; 91. proxy_temp_file_write_size 64k; 92. 93. location .*.(js|css)?$ 94. 95. expires 1h; 96. 97. 98. log_format access '$remote_addr - $remote_user $time_local "$request" ' 99. '$status $body_bytes_sent &q

15、uot;$http_referer" ' 100. '"$http_user_agent" $http_x_forwarded_for' 101. access_log /usr/local/nginx/logs/access.log access; 102. 103. 104. server 105. 106. listen 80; 107. server_name ; 108. 109. location / 110. stub_status on; 111. access_log off; 112. 113. 114. 2、安装、配置

16、tomcat先安装jdk1. wget 2. chmod 755 jdk-7u3-linux-x64.rpm 3. rpm -ivh jdk-7u3-linux-x64.rpm 在/etc/profile里设置环境变量1. JAVA_HOME=/usr/java/jdk1.7.0 2. CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib 3. PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 4. export PATH CLASSPATH JAVA_HOME 然后在source /etc/profile使这个改变生效

17、安装tomcat1. wget 2. tar zxvf apache-tomcat-7.0.25.tar.gz 3. cp -R apache-tomcat-7.0.25 /usr/local/tomcat 启动tomcat1. /usr/local/tomcat/bin/startup.sh 之后打开http:/localhost:8080就能看到tomcat的默认界面了下面我们来修改tomcat的首页我在$tomcat/webapps/下建了个html目录作为我网站的默认目录,在html中有一个index.html文件,该文件要作为我网站的默认主页。首先,修改$tomcat/conf/se

18、rver.xml文件。 在server.xml文件中,有一段如下:1. 2. <engine name="Catalina" defaultHost="localhost"> 3. <host name="localhost" appBase="webapps" 4. unpackWARs="true" autoDeploy="true" 5. xmlValidation="false" xmlNamespaceAware="f

19、alse"> 6. 7. <host> 8. </engine> 9. 在<host></host>标签之间添加上:1. <Context path="" docBase="html" debug="0" reloadable="true" /> path是说明虚拟目录的名字,如果你要只输入ip地址就显示主页,则该键值留为空; docBase是虚拟目录的路径,它默认的是$tomcat/webapps/ROOT目录,现在我在webapps目录下建了一个html目录,让该目录作为我的默认目录。 debug和reloadable一般都分别设置成0和true。然后,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论