nginx实现动静分离--附nginx配置文件详解
转自http://www.cnblogs.com/1214804270hacker/p/9299462.html
一、认识访问静态资源与访问动态资源的区别
静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。
如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。
动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。
如:请求明天的天气信息数据、请求查看账户余额。
二、请求动态数据与请求静态资源的分离的必要性
Tomcat应用服务器是用来处理Servlet容器和JSP的,虽然它也可以处理HTML等等一系列静态资源,但是效率不如Nginx;而且对Servlet容器和JSP的运算已经有很大压力了,如果不分离会导致大量的性能浪费。说到底,在应用服务方面,要遵循一条原则——一个服务只做一件事。要做动态请求就专做动态请求,要做静态请求就专做静态请求,这样才能提高性能。
我们要做的,就是当用户访问静态资源时,让Nginx将静态资源返回给用户;当用户访问动态资源时,将访问转到Tomcat应用服务器上,Tomcat将数据返回给Nginx,Nginx再返回给用户。
三、Nginx配置方法
在这里,对于Nginx的配置文件内的各项参数说明不多讲解,如需了解Nginx配置文件移步这里。
不知道配置文件位置的,一条指令:
- sudo find / -name nginx.conf
要善于利用Linux指令,这样就会无法自拔的爱上Linux;
先来一个全部配置:
- # user www www;
- user root root;
- worker_processes ; #设置值和CPU核心数一致
- error_log /home/zuoyu/ServerComputer/nginx/logs/nginx_error.log crit; #日志位置和日志级别
- pid /home/zuoyu/ServerComputer/nginx/nginx.pid;
- worker_rlimit_nofile ;
- events {
- #使用epoll模型提高性能
- use epoll;
- #单个进程最大连接数
- worker_connections ;
- }
- http {
- #扩展名与文件类型映射表
- include mime.types;
- #默认类型
- default_type application/octet-stream;
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
- client_header_buffer_size 32k;
- large_client_header_buffers 32k;
- client_max_body_size 8m;
- types_hash_max_size ;
- types_hash_bucket_size ;
- sendfile on;
- tcp_nopush on;
- keepalive_timeout ;
- tcp_nodelay on;
- fastcgi_connect_timeout ;
- fastcgi_send_timeout ;
- fastcgi_read_timeout ;
- fastcgi_buffer_size 64k;
- fastcgi_buffers 64k;
- fastcgi_busy_buffers_size 128k;
- fastcgi_temp_file_write_size 128k;
- # 解压缩传输
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 16k;
- gzip_http_version 1.0;
- gzip_comp_level ;
- gzip_types text/plain application/x-javascript text/css application/xml;
- gzip_vary on;
- #负载均衡组
- #静态服务器组
- upstream static.zuoyu.com {
- server localhost:;
- }
- #动态服务器组
- upstream dynamic.zuoyu.com {
- server localhost:;
- # server localhost:;
- # server localhost:;
- # server localhost:;
- }
- #配置代理参数
- proxy_redirect off;
- proxy_set_header HOST $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # client_max_body_size 10m;
- client_body_buffer_size 128k;
- proxy_connect_timeout ;
- proxy_send_timeout ;
- proxy_read_timeout ;
- proxy_buffer_size 16k;
- proxy_buffers 32k;
- proxy_busy_buffers_size 64k;
- proxy_temp_file_write_size 64k;
- #缓存配置
- proxy_cache_key '$host:$server_port$request_uri';
- # proxy_temp_file_write_size 64k;
- proxy_temp_path /home/zuoyu/ServerComputer/nginx/proxy_temp_path;
- proxy_cache_path /home/zuoyu/ServerComputer/nginx/proxy_cache_path levels=: keys_zone=cache_one:200m inactive=5d max_size=1g;
- proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
- #静态资源主机
- server {
- listen ;
- server_name localhost_0;
- charset utf8;
- location / {
- root /home/zuoyu/Public/NginxStaticSource/static;
- }
- }
- # 下面是server虚拟主机的配置
- server {
- listen ;#监听端口
- server_name localhost_1;#域名
- charset utf8;
- location / {
- # root /usr/share/nginx/html;
- proxy_pass http://dynamic.zuoyu.com;
- index index.html index.jsp;
- }
- location ~ .*\.(jsp|do|action)$
- {
- index index.jsp;
- proxy_pass http://dynamic.zuoyu.com;
- }
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|svg)$
- {
- #缓存30天
- expires 30d;
- proxy_pass http://static.zuoyu.com;
- proxy_cache cache_one;
- proxy_cache_valid 5d;
- proxy_cache_valid any 5d;
- proxy_cache_key '$host:$server_port$request_uri';
- add_header X-Cache '$upstream_cache_status from $host';
- }
- location ~ .*\.(ttf|woff|woff2)$
- {
- #缓存30天
- expires 30d;
- proxy_pass http://static.zuoyu.com;
- proxy_cache cache_one;
- proxy_cache_valid 5d;
- proxy_cache_valid any 5d;
- proxy_cache_key '$host:$server_port$request_uri';
- add_header X-Cache '$upstream_cache_status from $host';
- }
- location ~ .*\.(js|css)$
- {
- #缓存7天
- expires 7d;
- proxy_pass http://static.zuoyu.com;
- proxy_cache cache_one;
- proxy_cache_valid 5d;
- proxy_cache_valid any 5d;
- proxy_cache_key '$host:$server_port$request_uri';
- add_header X-Cache '$upstream_cache_status from $host';
- }
- #其他页面反向代理到tomcat容器
- location ~ .*$ {
- index index.jsp index.html;
- proxy_pass http://dynamic.zuoyu.com;
- }
- access_log off;
- error_page /50x.html;
- location = /50x.html {
- root /usr/share/nginx/html;
- }
- }
- }
1. 静态数据配置
在我的配置中,又建立了一个主机,专门用来配置静态资源路径,这样就避免了换一次静态资源的目录要改好多个地方,只需修改主机路径就可以实现。便可以将上述图片配置修改为
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|svg)$
- {
- proxy_pass http://localhost:81;
- }
这样便大大提高了灵活性,而且在负载均衡时更加容易实现。注意:必须将静态资源主机配置放在核心主机的上面才有效。
2. 动态数据配置
我们就以访问JSP页面、do请求、action请求为例子
- location ~ .*\.(jsp|do|action)$
- {
- index index.jsp;
- proxy_pass http://localhost:8080;
- }
这个配置告诉了Nginx服务器:当有以jsp、do、action为后缀的请求,就将该请求交给localhost:8080;这个主机处理,这个主机的主页是index.jsp,这个就叫反向代理。这里设计到一个概念——代理与反向代理;代理通常需要在客户端配置,将本来要发送的请求转发到代理服务器;而反向代理要配置在服务器上,将本来要发送到本服务器上的请求转发到代理服务器上。
将所有需要Tomcat应用服务器处理的请求都交给Tomcat,剩下的让Nginx处理就好了,如果需要其他服务器的,再配置上就ok了。
如此一来,就实现了动静分离。当用户的浏览器加载页面时,那些css文件、js文件、字体样式、图片等等都会由Nginx服务器直接从本地硬盘取出返回给用户浏览器;而用户名等等信息会由nginx交给Tomcat处理后返回给Nginx,Nginx返回到用户浏览器。
nginx实现动静分离--附nginx配置文件详解的更多相关文章
- nginx高性能WEB服务器系列之四配置文件详解
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx之动静分离(nginx与php不在同一台服务器)
nginx实现动静分离(nginx与php不在同一个服务器) 使用wordpress-5.0.3-zh_CN.tar.gz做实验 Nginx服务器的配置: [root@app ~]# tar xf w ...
- Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡
文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...
- Nginx知多少系列之(三)配置文件详解
目录 1.前言 2.安装 3.配置文件详解 4.Linux下托管.NET Core项目 5.Linux下.NET Core项目负载均衡 6.Linux下.NET Core项目Nginx+Keepali ...
- Nginx安装,目录结构与配置文件详解
1.Nginx简介 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设 ...
- Nginx+Tomcat动静分离及Nginx优化
目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk ...
- 15 nginx反向代理实现nginx+apache动静分离
一:nginx反向代理实现nginx+apache动静分离-------------概念--------------------------- nginx反向代理服务器+负载均衡 用nginx做反向代 ...
- Nginx配置配置文件详解
文章目录 配置文件 nginx.conf配置文件详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 事件相关配置 Fastcgi相关配置参数 常需要调整的参数 nginx作 ...
- nginx官方源安装-主配置文件详解
HTTP相关术语 PV : Page Visit 页面独立浏览量,查看日志生成条数可以看到PV数量. PV全称Page View,中文翻译即页面浏览.其具体的度量方法是从浏览器发出一个对网络服务器的请 ...
随机推荐
- CSS使文字、大小不固定的图片垂直居中
一:单行文字垂直居中 使用line-height为父元素高度即可. 二:多行文字垂直居中 使用display:table-cell属性. 将父元素设置为display:table-cell,同时ver ...
- 131. Palindrome Partitioning (Back-Track, DP)
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- ArcEngine调用GP里的Merge工具传参问题
Merge工具inputs参数形式与Python中不同: string startLayerPath= cpj.TempWs.PathName + @"\" + datasetNa ...
- IDEA00 IDEA知识点汇总
一.从头搭建IDEA开发环境 https://mp.weixin.qq.com/s/6jXHzkU8JfubhDsQJbwl8Q 1 下载最新版IDEA 1.1 官网下载安装 1.2 专业版激活 2 ...
- C语言字符编码处理
一.字符编码识别 1.简介 uchardet是一个开源的用于文本编码检测的C语言库,其功能模块是用C++实现的,通过一定数量的字符样本独立的分析出文本的编码,当前已经支持UTF-8/GB13080/B ...
- PHP性能之语言性能优化:安装VLD扩展——检测性能
使用Linux命令安装 //下载安装包 wget http://pecl.php.net/get/vld-0.14.0.tgz //解压包 tar zxvf vld-0.14.0.tgz //进入编译 ...
- 马婕 2014MBA专硕考试 报刊选读 6(转)
http://blog.sina.com.cn/s/blog_3e66af4601016udh.html Protecting the weakest保护最弱势群体The recession may ...
- wcf服务编程(第3版)文摘
第1章 wcf基础 什么是wcf: System.ServiceModel.dll 服务 服务的执行边界: proxy 地址:http/https,tcp,ipc,peer newwork,msmq, ...
- 同时安装2个版本的python
使用pip 当Python2和Python3同时存在于windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包.而是要使用启动器py.exe ...
- LDA详解
PART 1 这个性质被叫做共轭性.共轭先验使得后验概率分布的函数形式与先验概率相同,因此使得贝叶斯分析得到了极⼤的简化. V:文档集中不重复的词汇的数目 语料库共有m篇文档,: 对于文档,由个词 ...