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动静分离架构的更多相关文章

  1. Nginx动静分离架构&&HA-LB集群整合

    Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...

  2. 企业实战Nginx+Tomcat动静分离架构的技术分享

    Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Re ...

  3. Nginx教程(6) 动静分离架构

    一.原理 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,To ...

  4. Linux架构之Nginx 动静分离

    案例No.51:Nginx动静分离 1.web01配置静态资源 [root@web01 ~]# cd /etc/nginx/conf.d/#配置静态资源[root@web01 conf.d]# cat ...

  5. Nginx教程(6) 动静分离架构 (转)

    一.原理 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,To ...

  6. Nginx 动静分离与负载均衡的实现

    一.前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题. 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环 ...

  7. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  8. Nginx 动静分离概述

    目录 Nginx 动静分离是什么 Nginx 动静分离配置 Nginx 动静分离是什么 Nginx 动静分离,指的是静态资源请求由 Nginx 处理,动态资源请求由 php-fpm 处理或 tomca ...

  9. Nginx动静分离经典

    Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等]把所需的包下载到/usr/src下[根据自己的习惯,路径可以改变]1.首先安装pcre: cd /usr/s ...

随机推荐

  1. web前端UI框架

    分类:WEB前端 时间:2016年1月13日 目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了.在移动WEB开发的过程中,使用合适的移动WE ...

  2. Oracle-数据类型为date 日期查询技巧

    date类型是oracle中存储日期类的一种常用类型,其处理也是在数据库使用中比较多需要注意的地方.如我们可以使用to_char函数将其转化为任意时间格式的字符串,也可使用to_date函数转化相应的 ...

  3. f.lux——自动调整屏幕色温减少眼睛疲劳,长时间玩电脑必备!

    长时间玩电脑的同学肯定会觉得眼睛很难受,而电脑自带的调节亮度的功能通常又不能够满足我们,所以今天就给大家推荐一个保护视力的软件—— flux,这个软件是通过调节色温来达到保护视力的作用,通常在台式机的 ...

  4. Numpy库的下载及安装(吐血总结)

    Python很火,我也下了个来耍耍一阵子.可是渐渐地,我已经不满足于它的基本库了,我把目光转到了Numpy~~~~~ 然而想法总是比现实容易,因为我之前下的是Python3.3.x,所有没有自带pip ...

  5. puppet客户端拉取服务端的资源时报错

    2017-11-01   16:21:47 客户端再拉取服务端的配置的资源时,出现一下报错: 造成原因:服务配置的资源不可用: 解决办法:将服务端不正确的资源配置删除: master:   cd   ...

  6. Online Judge(OJ)搭建——5、配置

    Spring 配置一些本地类,还有 HTML form 提交文件的解析器. package per.piers.onlineJudge.config; import org.springframewo ...

  7. Database operations of Mysql

    update 表名 set 字段名=replace(同一个字段名,原字符串,新字符串);  --修改记录. 一.初始化 # cd /usr/local/mysql # chown -R mysql:m ...

  8. linux 下后台运行python脚本

    这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log &说明:  ...

  9. nbtstat

    某个主机的ip地址为:192.168.155.1 我们通过nbtstat -a ip命令就可知道这个主机的名称信息.

  10. MYSQL数据库学习十七 日志管理

    17.1 MySQL软件所支持的日志 MySQL所支持的日志文件里,除了二进制日志文件外,其他日志文件都是文本文件.默认情况下,MySQL只会启动错误日志文件,其他日志文件则需要手动启动. 二进制日志 ...