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)---函数.数组 函数的概念:实现特定功能的一段代码,可反复使用. 函数的出现减少代码冗余,提高代码的复用性,可读性,可维护性,可以使每个功能模块独立起来,方便分工合作. 函 ...