Nginx动静分离架构

Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Resin,PHP,ASP处理动态页面,
动静分离从目前实现角度来件大致分为两种,一种是纯粹的将静态文件独立成单独的域名,放在独立的服务器上,也就会目前主流推崇的方案;另一种是动态跟 静态文件混合在一起发布,通过Nginx来分开;
[root@Nginx-server ~]# useradd -M -s /sbin/nologin nginx
[root@Nginx-server ~]# yum install -y pcre-devel popt-devel openssl-devel
[root@Nginx-server ~]# tar zxvf nginx-1.11.2.tar.gz -C /usr/src/
[root@Nginx-server ~]# cd /usr/src/nginx-1.11.2/
[root@Nginx-server nginx-1.11.2]# ./configure  --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module
[root@Nginx-server nginx-1.11.2]# make
[root@Nginx-server nginx-1.11.2]# make install
[root@Nginx-server nginx-1.11.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@Nginx-server nginx-1.11.2]# nginx  -t 
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@Nginx-server nginx-1.11.2]# nginx
【Tomcat-server01】
[root@Tomcat-server01 ~]# tar zxvf jdk-7u65-linux-x64.gz
[root@Tomcat-server01 ~]# mv jdk1.7.0_65/ /usr/
[root@Tomcat-server01 ~]# vim /etc/profile
export JAVA_HOME=/usr/jdk1.7.0_65
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
[root@Tomcat-server01 ~]# source /etc/profile
[root@Tomcat-server01 ~]# java -version 
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
[root@Tomcat-server01 ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz
[root@Tomcat-server01 ~]# tar zxvf apache-tomcat-7.0.82.tar.gz -C /usr/src/
[root@Tomcat-server01 ~]# mv apache-tomcat-7.0.82 /usr/local/tomcat 
[root@Tomcat-server01 ~]# /usr/local/tomcat/bin/startup.sh
[root@Tomcat-server01 tomcat]# mkdir /web/xiaoyu -p
[root@Tomcat-server01 xiaoyu]# vim /web/xiaoyu/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test pge</title>
</head>
  <body>
   <% out.println("欢迎访问tomcat网站首页:http://www.test01.com");%>
  </body>
</html>

[root@Tomcat-server01 ~]# vim /usr/local/tomcat/conf/server.xml
 <Context docBase="/web/xiaoyu" path="" reloadable="false">
</Context>

测试正常!

[Tomcat 02]
[root@Tomcat-server02 ~]# vim /web/xiaoyu/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test pge</title>
</head>
<body>
<% out.println("欢迎访问tomcat网站首页:http://www.test02.com");%>
</body>
</html>

[root@Tomcat-server02 ~]# vim /usr/local/tomcat/conf/server.xml


[配置Nginx服务端]
配置负载均衡&动静分离
[root@Nginx-server ~]# vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 102400;
events
          {
           use epoll;
         worker_connections 102400;
           }
http
          {
   include mime.types;
   default_type application/octet-stream;
   fastcgi_intercept_errors on;
   charset utf-8;
   server_names_hash_bucket_size 128
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
   client_max_body_size 300m;
   sendfile on;
   tcp_nopush on;
   keepalive_timeout 60;
   tcp_nodelay on;
   client_body_buffer_size 512k;
   proxy_connect_timeout 5;
   proxy_read_timeout 60;
   proxy_send_timeout 5;
   proxy_buffer_size 16k;
   proxy_buffers 4 64k;
   proxy_busy_buffers_size 128k;
   proxy_temp_file_write_size 128k;
   gzip on;
   gzip_min_length 1k;
gzip_buffers 4 16k;
   gzip_http_version 1.1;
   gzip_comp_level 2;
   gzip_types text/plain application/x-javascript text/css application/xml;
   gzip_vary on;
log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
                             '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" $request_time $remote_addr';
upstream tdt_webapp {
                server 192.168.2.137:8080 weight=1 max_fails=2 fail_timeout=30s;
                server 192.168.2.140:8080 weight=1  max_fails=2   fail_timeout=30s;
                }
##include引用vhosts.conf,该文件主要用于配置Nginx 虚拟主机
include vhosts.conf;
}
[root@Nginx-server ~]# vim /usr/local/nginx/conf/vhosts.conf
server
       {
    listen 80;
     server_name www.wuguangke.cn;
     index index.html index.htm;
#配置发布目录为/data/www/webapp
      root /data/www/webapp;
      location /
              {
      proxy_next_upstream http_502 http_504 error timeout invalid_header;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass http://tdt_webapp;
      expires 3d;
              }
#动态页面交给http://tdt_webapp,也即我们之前在nginx.conf定义的upstream tdt_webapp 均衡
      location ~ .*\.(php|jsp|cgi)?$
       {
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass http://tdt_webapp;
         }
      #配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
      location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
      {
       root /data/www/webapp;
#expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
      expires 3d;
      }
#定义Nginx输出日志的路径
       access_log /usr/local/nginx/logs/nginx_xiaoyu/access.log main;
       error_log /usr/local/nginx/logs/nginx_xiaoyu/error.log   crit;
      }
【验证】
后端配置好Tomcat服务。成功启动之后,发布的程序需要同步到Nginx的/data/www/webapp对应的目录,因为配置动静分离后,用户请求定义的静态页面,默认户去nginx的发布的目录请求,所以这个时候,要保证后端的tomcat数据和前端的数据保持
Nginx本地发布目录/data/www/webapp静态文件;后端两台Tomcat存放动态jsp文件
检查Nginx配置是否正确即可,然后测试动静分离是否成功,在192.168.149.130服务器启动8080、8081 Tomcat服务或者LAMP服务,删除后端Tomcat或者LAMP服务器上的某个静态文件,测试是否能访问该文件,如果可以访问说明静态资源Nginx直接返回了,如果不能访问,则证明动静分离不成功。
或者是说,后端两台Tomcat服务器正常访问,Nginx本地静态文件也能正常访问,但是Nginx配置文件配置了负载,且默认请求 是动态数据,



Nginx动静分离架构的更多相关文章
- Nginx动静分离架构&&HA-LB集群整合
		Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ... 
- 企业实战Nginx+Tomcat动静分离架构的技术分享
		Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Re ... 
- Nginx教程(6) 动静分离架构
		一.原理 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,To ... 
- Linux架构之Nginx 动静分离
		案例No.51:Nginx动静分离 1.web01配置静态资源 [root@web01 ~]# cd /etc/nginx/conf.d/#配置静态资源[root@web01 conf.d]# cat ... 
- Nginx教程(6) 动静分离架构 (转)
		一.原理 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,To ... 
- Nginx 动静分离与负载均衡的实现
		一.前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题. 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环 ... 
- Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived  实现高可用)
		一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ... 
- Nginx 动静分离概述
		目录 Nginx 动静分离是什么 Nginx 动静分离配置 Nginx 动静分离是什么 Nginx 动静分离,指的是静态资源请求由 Nginx 处理,动态资源请求由 php-fpm 处理或 tomca ... 
- Nginx动静分离经典
		Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等]把所需的包下载到/usr/src下[根据自己的习惯,路径可以改变]1.首先安装pcre: cd /usr/s ... 
随机推荐
- play @Before 的使用
			用play 框架也又一段时间了,也算是有了些经验,今天就总结下@Before 的使用. 这个注解能主要在控制器中使用,用于在Action 前进行拦截 unless 表示不用拦截 的Action @Be ... 
- 如何卸载wineQQ?
			好久没有用ubuntu系统的wineqq了,今天用的时候,提示无法使用,要求官网重新下载新版本, 感觉挺麻烦的,准备卸载,半天卸载不了. 经过努力,最终还是卸载了. 卸载命令: sudo dpkg ... 
- Angular4---部署---将Angular项目部署到IIS上
			---恢复内容开始--- Angular项目部署到一个IIS服务器上 1.安装URL rewrite组件: 网址:https://www.microsoft.com/en-us/download/de ... 
- ubuntu,kali linux和windows三系统流水账——写给自己
			我先说一下ubuntu和windows双系统安装的几种方法,最后总结kali linux的安装,想起什么写什么,所以有点乱.然后记录一下自己的使用过程中遇见的问题和解决的方法,还有我的个人建议. 我个 ... 
- Firefox取消“订阅实时书签”功能
			如果你勾选了Firefox“总是用实时书签订阅收取”, 一打开RSS页面就直接弹出添订阅实时书签对话,而当你想在火狐中直接查看RSS页面时,发现不知如何取消“订阅实时书签”功能了.就怨这个关闭功能藏的 ... 
- 5分钟学习spark streaming之 轻松在浏览器运行和修改Word Counts
			方案一:根据官方实例,下载预编译好的版本,执行以下步骤: nc -lk 9999 作为实时数据源 ./bin/run-example org.apache.spark.examples.sql.str ... 
- svn从Windows服务器上迁移到Linux上
			svn从Windows服务器迁移到Linux服务器 author:headsen chen 2017-10-16 16:50:32 个人原创,转载请注明.否则依法追究法律责任 ... 
- pyenv 安装
			sudo yum install openssl* git clone https://github.com/yyuu/pyenv.git ~/.pyenv echo 'export ... 
- 关于在linux下安装git,以及在idea上将项目部署到码云上
			GIT 基于对linux感兴趣,并且也考虑到以后从事开发后也会用到linux,着实在闲余之际学学linux.最近在用VM虚拟机环境下学做一个项目,在git上卡了一点时间,但同时也收获 了不少,下面写 ... 
- JavaSE语法基础(3)---函数、数组
			JavaSE语法基础(3)---函数.数组 函数的概念:实现特定功能的一段代码,可反复使用. 函数的出现减少代码冗余,提高代码的复用性,可读性,可维护性,可以使每个功能模块独立起来,方便分工合作. 函 ... 
