转自http://www.cnblogs.com/1214804270hacker/p/9299462.html

一、认识访问静态资源与访问动态资源的区别

  静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。

  如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。

  

  动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。

  如:请求明天的天气信息数据、请求查看账户余额。

二、请求动态数据与请求静态资源的分离的必要性

  Tomcat应用服务器是用来处理Servlet容器和JSP的,虽然它也可以处理HTML等等一系列静态资源,但是效率不如Nginx;而且对Servlet容器和JSP的运算已经有很大压力了,如果不分离会导致大量的性能浪费。说到底,在应用服务方面,要遵循一条原则——一个服务只做一件事。要做动态请求就专做动态请求,要做静态请求就专做静态请求,这样才能提高性能。

   

  我们要做的,就是当用户访问静态资源时,让Nginx将静态资源返回给用户;当用户访问动态资源时,将访问转到Tomcat应用服务器上,Tomcat将数据返回给Nginx,Nginx再返回给用户。

三、Nginx配置方法

  在这里,对于Nginx的配置文件内的各项参数说明不多讲解,如需了解Nginx配置文件移步这里

  不知道配置文件位置的,一条指令:

  1. sudo find / -name nginx.conf

  要善于利用Linux指令,这样就会无法自拔的爱上Linux;

  先来一个全部配置:

  1. # user www www;
  2. user root root;
  3.  
  4. worker_processes ; #设置值和CPU核心数一致
  5.  
  6. error_log /home/zuoyu/ServerComputer/nginx/logs/nginx_error.log crit; #日志位置和日志级别
  7.  
  8. pid /home/zuoyu/ServerComputer/nginx/nginx.pid;
  9.  
  10. worker_rlimit_nofile ;
  11.  
  12. events {
  13. #使用epoll模型提高性能
  14. use epoll;
  15. #单个进程最大连接数
  16. worker_connections ;
  17. }
  18.  
  19. http {
  20. #扩展名与文件类型映射表
  21. include mime.types;
  22. #默认类型
  23. default_type application/octet-stream;
  24.  
  25. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  26. '$status $body_bytes_sent "$http_referer" '
  27. '"$http_user_agent" "$http_x_forwarded_for"';
  28.  
  29. client_header_buffer_size 32k;
  30. large_client_header_buffers 32k;
  31. client_max_body_size 8m;
  32. types_hash_max_size ;
  33. types_hash_bucket_size ;
  34.  
  35. sendfile on;
  36. tcp_nopush on;
  37. keepalive_timeout ;
  38. tcp_nodelay on;
  39. fastcgi_connect_timeout ;
  40. fastcgi_send_timeout ;
  41. fastcgi_read_timeout ;
  42. fastcgi_buffer_size 64k;
  43. fastcgi_buffers 64k;
  44. fastcgi_busy_buffers_size 128k;
  45. fastcgi_temp_file_write_size 128k;
  46. # 解压缩传输
  47. gzip on;
  48. gzip_min_length 1k;
  49. gzip_buffers 16k;
  50. gzip_http_version 1.0;
  51. gzip_comp_level ;
  52. gzip_types text/plain application/x-javascript text/css application/xml;
  53. gzip_vary on;
  54.  
  55. #负载均衡组
  56. #静态服务器组
  57. upstream static.zuoyu.com {
  58. server localhost:;
  59. }
  60.  
  61. #动态服务器组
  62. upstream dynamic.zuoyu.com {
  63. server localhost:;
  64. # server localhost:;
  65. # server localhost:;
  66. # server localhost:;
  67. }
  68.  
  69. #配置代理参数
  70. proxy_redirect off;
  71. proxy_set_header HOST $host;
  72. proxy_set_header X-Real-IP $remote_addr;
  73. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  74. # client_max_body_size 10m;
  75. client_body_buffer_size 128k;
  76. proxy_connect_timeout ;
  77. proxy_send_timeout ;
  78. proxy_read_timeout ;
  79. proxy_buffer_size 16k;
  80. proxy_buffers 32k;
  81. proxy_busy_buffers_size 64k;
  82. proxy_temp_file_write_size 64k;
  83.  
  84. #缓存配置
  85. proxy_cache_key '$host:$server_port$request_uri';
  86. # proxy_temp_file_write_size 64k;
  87. proxy_temp_path /home/zuoyu/ServerComputer/nginx/proxy_temp_path;
  88. proxy_cache_path /home/zuoyu/ServerComputer/nginx/proxy_cache_path levels=: keys_zone=cache_one:200m inactive=5d max_size=1g;
  89. proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
  90.  
  91. #静态资源主机
  92. server {
  93. listen ;
  94. server_name localhost_0;
  95. charset utf8;
  96.  
  97. location / {
  98. root /home/zuoyu/Public/NginxStaticSource/static;
  99. }
  100. }
  101. # 下面是server虚拟主机的配置
  102. server {
  103. listen ;#监听端口
  104. server_name localhost_1;#域名
  105. charset utf8;
  106.  
  107. location / {
  108. # root /usr/share/nginx/html;
  109. proxy_pass http://dynamic.zuoyu.com;
  110. index index.html index.jsp;
  111. }
  112.  
  113. location ~ .*\.(jsp|do|action)$
  114. {
  115. index index.jsp;
  116. proxy_pass http://dynamic.zuoyu.com;
  117.  
  118. }
  119.  
  120. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|svg)$
  121. {
  122. #缓存30天
  123. expires 30d;
  124. proxy_pass http://static.zuoyu.com;
  125. proxy_cache cache_one;
  126. proxy_cache_valid 5d;
  127. proxy_cache_valid any 5d;
  128. proxy_cache_key '$host:$server_port$request_uri';
  129. add_header X-Cache '$upstream_cache_status from $host';
  130. }
  131.  
  132. location ~ .*\.(ttf|woff|woff2)$
  133. {
  134. #缓存30天
  135. expires 30d;
  136. proxy_pass http://static.zuoyu.com;
  137. proxy_cache cache_one;
  138. proxy_cache_valid 5d;
  139. proxy_cache_valid any 5d;
  140. proxy_cache_key '$host:$server_port$request_uri';
  141. add_header X-Cache '$upstream_cache_status from $host';
  142. }
  143.  
  144. location ~ .*\.(js|css)$
  145. {
  146. #缓存7天
  147. expires 7d;
  148. proxy_pass http://static.zuoyu.com;
  149. proxy_cache cache_one;
  150. proxy_cache_valid 5d;
  151. proxy_cache_valid any 5d;
  152. proxy_cache_key '$host:$server_port$request_uri';
  153. add_header X-Cache '$upstream_cache_status from $host';
  154. }
  155.  
  156. #其他页面反向代理到tomcat容器
  157. location ~ .*$ {
  158. index index.jsp index.html;
  159. proxy_pass http://dynamic.zuoyu.com;
  160. }
  161. access_log off;
  162. error_page /50x.html;
  163.  
  164. location = /50x.html {
  165. root /usr/share/nginx/html;
  166. }
  167. }
  168.  
  169. }

1. 静态数据配置

在我的配置中,又建立了一个主机,专门用来配置静态资源路径,这样就避免了换一次静态资源的目录要改好多个地方,只需修改主机路径就可以实现。便可以将上述图片配置修改为

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|svg)$
  2. {
  3. proxy_pass http://localhost:81;
  4. }

  这样便大大提高了灵活性,而且在负载均衡时更加容易实现。注意:必须将静态资源主机配置放在核心主机的上面才有效。

  

2. 动态数据配置

我们就以访问JSP页面、do请求、action请求为例子

  1. location ~ .*\.(jsp|do|action)$
  2. {
  3. index index.jsp;
  4. proxy_pass http://localhost:8080;
  5.  
  6. }

  这个配置告诉了Nginx服务器:当有以jsp、do、action为后缀的请求,就将该请求交给localhost:8080;这个主机处理,这个主机的主页是index.jsp,这个就叫反向代理。这里设计到一个概念——代理与反向代理;代理通常需要在客户端配置,将本来要发送的请求转发到代理服务器;而反向代理要配置在服务器上,将本来要发送到本服务器上的请求转发到代理服务器上。

  将所有需要Tomcat应用服务器处理的请求都交给Tomcat,剩下的让Nginx处理就好了,如果需要其他服务器的,再配置上就ok了。

  如此一来,就实现了动静分离。当用户的浏览器加载页面时,那些css文件、js文件、字体样式、图片等等都会由Nginx服务器直接从本地硬盘取出返回给用户浏览器;而用户名等等信息会由nginx交给Tomcat处理后返回给Nginx,Nginx返回到用户浏览器。

nginx实现动静分离--附nginx配置文件详解的更多相关文章

  1. nginx高性能WEB服务器系列之四配置文件详解

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  2. nginx之动静分离(nginx与php不在同一台服务器)

    nginx实现动静分离(nginx与php不在同一个服务器) 使用wordpress-5.0.3-zh_CN.tar.gz做实验 Nginx服务器的配置: [root@app ~]# tar xf w ...

  3. Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡

    文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...

  4. Nginx知多少系列之(三)配置文件详解

    目录 1.前言 2.安装 3.配置文件详解 4.Linux下托管.NET Core项目 5.Linux下.NET Core项目负载均衡 6.Linux下.NET Core项目Nginx+Keepali ...

  5. Nginx安装,目录结构与配置文件详解

    1.Nginx简介 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设 ...

  6. Nginx+Tomcat动静分离及Nginx优化

    目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk ...

  7. 15 nginx反向代理实现nginx+apache动静分离

    一:nginx反向代理实现nginx+apache动静分离-------------概念--------------------------- nginx反向代理服务器+负载均衡 用nginx做反向代 ...

  8. Nginx配置配置文件详解

    文章目录 配置文件 nginx.conf配置文件详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 事件相关配置 Fastcgi相关配置参数 常需要调整的参数 nginx作 ...

  9. nginx官方源安装-主配置文件详解

    HTTP相关术语 PV : Page Visit 页面独立浏览量,查看日志生成条数可以看到PV数量. PV全称Page View,中文翻译即页面浏览.其具体的度量方法是从浏览器发出一个对网络服务器的请 ...

随机推荐

  1. CSS使文字、大小不固定的图片垂直居中

    一:单行文字垂直居中 使用line-height为父元素高度即可. 二:多行文字垂直居中 使用display:table-cell属性. 将父元素设置为display:table-cell,同时ver ...

  2. 131. Palindrome Partitioning (Back-Track, DP)

    Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...

  3. ArcEngine调用GP里的Merge工具传参问题

    Merge工具inputs参数形式与Python中不同: string startLayerPath= cpj.TempWs.PathName + @"\" + datasetNa ...

  4. IDEA00 IDEA知识点汇总

    一.从头搭建IDEA开发环境 https://mp.weixin.qq.com/s/6jXHzkU8JfubhDsQJbwl8Q 1 下载最新版IDEA 1.1 官网下载安装 1.2 专业版激活 2 ...

  5. C语言字符编码处理

    一.字符编码识别 1.简介 uchardet是一个开源的用于文本编码检测的C语言库,其功能模块是用C++实现的,通过一定数量的字符样本独立的分析出文本的编码,当前已经支持UTF-8/GB13080/B ...

  6. PHP性能之语言性能优化:安装VLD扩展——检测性能

    使用Linux命令安装 //下载安装包 wget http://pecl.php.net/get/vld-0.14.0.tgz //解压包 tar zxvf vld-0.14.0.tgz //进入编译 ...

  7. 马婕 2014MBA专硕考试 报刊选读 6(转)

    http://blog.sina.com.cn/s/blog_3e66af4601016udh.html Protecting the weakest保护最弱势群体The recession may ...

  8. wcf服务编程(第3版)文摘

    第1章 wcf基础 什么是wcf: System.ServiceModel.dll 服务 服务的执行边界: proxy 地址:http/https,tcp,ipc,peer newwork,msmq, ...

  9. 同时安装2个版本的python

    使用pip 当Python2和Python3同时存在于windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包.而是要使用启动器py.exe ...

  10. LDA详解

    PART 1 这个性质被叫做共轭性.共轭先验使得后验概率分布的函数形式与先验概率相同,因此使得贝叶斯分析得到了极⼤的简化.   V:文档集中不重复的词汇的数目 语料库共有m篇文档,: 对于文档,由个词 ...