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 ...
随机推荐
- Eslint报错整理与解决方法(持续整理)
1.'Unexpected tab character' 字面意思理解呢就是意想不到的制表符,当时出现的时候就是我习惯的使用Tab键去打空格,但是eslint默认不认可Tab,所以解决方法很简单: 在 ...
- 面向对象设计模式_命令模式(Command)解读
在.Net框架中很多对象的方法中都会有Invoke方法,这种方法的设计实际是用了设计模式的命令模式, 模式图如下 其核心思路是将Client 向Receiver发送的命令行为进行抽象(ICommand ...
- EasyUI Parser 解析器
Parser(解析器)应用场景 1,自动调用parser 只要我们书写相应的class,easyui就能成功的渲染页面,这是因为解析器在默认情况下,会在dom加载完成的时候($(docunment). ...
- ajax 图片上传
html 部分: <form action="" id='myForm' enctype="multipart/form-data"> <di ...
- 云主机和vps的区别
云主机和vps的区别 近年来,IT行业开始热衷于各种云概念,而云主机就是其中之一,并且有越来越热之势.对普通用户而言,可能不太清楚云主机和VPS的区别,下面我们就来说说云主机和VPS到底有什么不同 ...
- Mycat 分片规则详解--取模分片
实现方式:切分规则根据配置中输入的数值n.此种分片规则将数据分成n份(通常dn节点也为n),从而将数据均匀的分布于各节点上. 优点:这种策略可以很好的分散数据库写的压力.比较适合于单点查询的情景 缺点 ...
- spring-boot 多模块化项目和EurekaServer的搭建
Spring boot由于其 1.易于开发和维护.2.单个微服务启动快.3.局部修改部署容易.4.技术栈不受语言限制等优点受到越来越多公司的重视.spring-boot还集成了许多关于微服务开发的框架 ...
- PHP-CGI,FASTcgi,php-fpm,之间的关系?
刚开始对这个问题我也挺纠结的,看了<HTTP权威指南>后,感觉清晰了不少.首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. ...
- 打印十字图 JAVA 递归实现
这个是我自己想的,头疼了一个下午,不过还好.做出来了.在网上找这道题但没有找到用递归的做法. /*递归思想实现 * 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可 ...
- Java学习日记——基本数据类型
基本数据类型: byte 1个字节 正负都能表示2的8-1次方 -128~127(包括0) short 2个字节 2的16-1次 整数类型 (默认为int类型) int 4个字节 2的32-1次方 l ...