Nginx的应用之动静分离

Nginx 的动静分离

我们通过中间件将动态请求和静态请求进行分离,减少了不必要的请求消耗和延时。

动静分离后,即使动态服务不可用,但静态资源不会受到影响。

应用实例

1、准备环境

系统 角色 主机名 IP 服务
CentOS 7.2 反向代理 Nginx_Proxy 192.168.1.10 Nginx:v1.16.1
CentOS 7.2 静态资源 Nginx_Static 192.168.1.11 Nginx:v1.16.1
CentOS 7.2 动态资源 Tomcat_Server 192.168.1.12 Tomcat/7.0.76

2、配置服务器

2.1、在Nginx Static主机中配置静态资源(以图片为例)

[[email protected]_Static]# vim /etc/nginx/conf.d/static.conf
server {
        listen 80;
        server_name static.com;
        root /data/www/static;
        index index.html;

        location ~* .*\.(png|jpg|gif)$ {
                root /data/www/static/images;
        }
}
#准备存放图片的目录及图片
[[email protected]_Static]# mkdir -pv /data/www/static/images
[[email protected]_Static]# wget -O /data/www/static/images/nginx.png http://nginx.org/nginx.png
[[email protected]_Static]# systemctl restart nginx

2.2、在 Tomcat_Server主机中配置动态资源(以随机数为例)

#安装Tomcat,并编辑随机数的jsp文件
[[email protected]_Server]# yum -y install tomcat
[[email protected]_Server]# mkdir /usr/share/tomcat/webapps/ROOT
[[email protected]_Server]# vim /usr/share/tomcat/webapps/ROOT/java.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
    <HEAD>
        <TITLE>JSP Test Page</TITLE>
    </HEAD>
    <BODY>
      <%
        Random rand = new Random();
        out.println("<h1>Random number:</h1>");
        out.println(rand.nextInt(99)+100);
      %>
    </BODY>
</HTML>

#重启tomcat服务
[[email protected]_Server]# 

2.3、在Nginx_Proxy主机上配置代理,实现访问jsp和png

[[email protected]_Proxy]# vim /etc/nginx/conf.d/proxy.conf
upstream static {
    server 192.168.1.11:80;
}
upstream java {
    server 192.168.1.12:8080;
}

server {
    listen 80;
    server_name proxy.com;
    location / {
        root /data/www/whole;
        index index.html;
    }
    location ~ .*\.(png|jpg|gif)$ {
        proxy_pass http://static;
    }
    location ~ .*\.jsp$ {
        proxy_pass http://java;
    }
}
#重启nginx
[[email protected]_Proxy]# systemctl restart nginx 

2.4、通过代理服务器测试访问动态及静态资源

2.5、在Nginx_Proxy主机上将动态和静态资源合并为html文件

[[email protected]_Proxy]# mkdir /data/www/whole
[[email protected]_Proxy]# vim /data/www/whole/index.html
<html lang="en">
<head>
        <meta charset="UTF-8" />
        <title>测试ajax和跨域访问</title>
        <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
        $.ajax({
        type: "GET",
        url: "http://proxy.com/java.jsp",
        success: function(data) {
                $("#get_data").html(data)
        },
        error: function() {
                alert("fail!!,请刷新再试!");
        }
        });
});
</script>
        <body>
                <h1>测试动静分离</h1>
                <img src="http://proxy.com/nginx.png">
                <div id="get_data"></div>
        </body>
</html>

2.6、使用浏览器测试访问,动态及静态资源能否加载在一个html文件中

2.7、关闭静态资源的nginx服务后,发现静态内容无法访问,但动态内容可以正常浏览

2.8、关闭动态资源的tomcat服务后,发现动态内容无法访问,但静态内容可以正常浏览

原文地址:https://www.cnblogs.com/Smbands/p/11415727.html

时间: 2024-10-09 23:34:27

Nginx的应用之动静分离的相关文章

Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第三部分

Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com 微信bh19890922 QQ445718526.490425557 三.Nginx动静分离及负载均衡 3.1 Nginx安装 请参考:https://fengchenglangzi.000webhostapp.com/?p=511 亦

Nginx 和 IIS 实现动静分离【转载】

前段时间,搞Nginx+IIS的负载均衡,想了解的朋友,可以看这篇文章:<nginx 和 IIS 实现负载均衡>,然后也就顺便研究了Nginx + IIS 实现动静分离.所以,一起总结出来,与大家共同探讨. 动静分离,说白了,就是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用服务器的请求.后台应用服务器只负责动态数据请求. 优势:分担负载,减轻web服务器的压力,适用于大负载. 静态资源放置cdn,同时还可以

nginx反代后端动静分离 php会话保持使用memcached

nginx调度器: DR:172.18.11.111 ]# yum -y install nginx ]# systemctl start nginx php主机:部署phpwind程序.安装memcached RS1:172.18.11.112 RS2:172.18.11.113 ]# yum -y install php ]# systemctl start php ]# yum -y install memcached ]# yum -y install libmemcached ]# y

nginx反向代理(动静分离)

使用反向代理(动静分离)可以让nginx专注静态内容,把动态请求交给apache来处理,发挥各自的优势,而且整个架构更加清晰: 这里假设你已经搭建好了nginx环境; 为了简单起见,就不用源码编译安装了,直接使用apt方式安装,不影响说明: apt-get install apache2 -y apt-get install libapache2-mod-php7.0 #php版本随意 修改apache的配置文件,首先端口不能跟nginx重复: 采用apt方式安装的apache需要改如下两个配置

使用nginx作为代理实现动静分离

客户端访问http://bbs.upl.com --> 解析到 nginx_proxy 172.16.2.8 nginx_proxy作为反向代理,实现动静分离:    如果是已知的静态页面请求: 调度给squid             图片,文本.txt,.html,.htm,客户端代码文件.js,.css 其他未知的请求(包括php)调度给lnmp节点 nginx_proxy 使用宿主机    br0    172.16.2.8    <---模拟连接到公网    virbr1    19

nginx+tomcat负载均衡+动静分离

1.服务器A安装ng,服务器B.C安装tomcat: 2.服务器A建立/data/www目录,用于发布静态文件: 3.ng无动静分离配置: user root root; worker_processes 8; pid /usr/local/nginx/nginx.pid; worker_rlimit_nofile 102400; events { use epoll; worker_connections 102400; } http { include mime.types; default

Nginx缓存和程序动静分离设置

一.配置Nginx缓存. 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path 语法 proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time];

haproxy+nginx+tomcat+memcache实现动静分离、会话同步集群

一.实验说明 haproxy在前端做负载均衡调度,后端实现动静分离 静态资源server为nginx 动态内容使用nginx&tomcat做app server,集成于单机,两台 使用两台memcache服务器做高可用session缓存,实现app server宕机时会话不中断 以上组合使用实现业务.session.session缓存均为高可用的集群. 二.实验准备 haproxy server:192.168.0.168 nginx server(静态):192.168.0.68 nginx+

nginx四层负载及动静分离

阿里云实验10.0.0.132 LB10.0.0.133 web0110.0.0.134 web02 步骤:1.安装nginx1.14 获取官网repo文件 yum install -y nginx 2.配置文件,web服务器都是一样的 [[email protected] conf.d]# cat www.conf server { listen 80; server_name ali.xiao.com; location / { root /code/ali; index index.htm