`
newbee_zc
  • 浏览: 30942 次
文章分类
社区版块
存档分类
最新评论

nginx配置动静分离和负载均衡

阅读更多

一、nginx的安装

 

      本地环境:centos-x86 6.5     nginx-1.10.2

1.安装pcre库
yum install –y make zlib-devel openssl-devel pcre-devel

ubuntu系统:
apt-get update
apt-get install libpcre3 libpcre3-dev

apt-get install zlib1g-dev

apt-get install openssl

2.安装GCC 和GCC-C++
yum install gcc
yum install -y gcc gcc-c++

ubuntu系统:
apt-get install build-essential
apt-get install libtool

3.安装ngx_cache_purge-2.3 
官网:http://labs.frickle.com/nginx_ngx_cache_purge/ 
文件名:ngx_cache_purge-2.3.tar.gz tar zxvf ngx_cache_purge-2.3.tar.gz 
将解压文件夹放到nginx解压文件的同级目录

3.安装nginx(prefix指定nginx文件安装路径,with指定安装的插件
ngx_cache_purge模块的作用:用于清除指定url的缓存)

tar zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=../ngx_cache_purge-2.3
make && make install


4.编写启动脚本
[root@localhost ~]# vi /etc/init.d/nginx
#!/bin/bash
# chkconfig: 345 99 20
# description: Nginx servicecontrol script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
echo "Nginx servicestart success."
;;
stop)
kill -s QUIT $(cat $PIDF)
echo "Nginx service stopsuccess."
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
echo"reload Nginx configsuccess."
;;
*)
echo "Usage: $0{start|stop|restart|reload}"
exit 1
esac


5.启动
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# service nginx restart
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# chkconfig nginx on

 

 

二、修改配置文件

 

   

worker_processes 4; 

#error_log logs/error.log info;

events {
    #使用epoll模型提高性能
    use epoll;

    #单个进程连接数(最大连接数=连接数*进程数)
    worker_connections 65535;
}


http {

    #文件扩展名与文件类型映射表 
    include mime.types;

    #默认文件类型 
    default_type application/octet-stream;

    
    #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
    #注意:如果图片显示不正常把这个改成off
    sendfile on;

    #长连接超时时间,单位是秒 
    keepalive_timeout 65;

    #gzip 是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
    gzip on;
    gzip_min_length 1k; #最小1K
    gzip_buffers 16 64K;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain application/x- text/css application/xml application/;
    gzip_vary on;

    #header设置:用户真实的ip地址转发给后端服务器
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;

    #缓冲
    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;
    
    
    ##########################缓存#####################
    #设置缓存临时目录,要配合linux的内存目录/dev/shm使用的话,必须给赋予目录权限,因为默认root权限
    proxy_temp_path /mydata/proxy_temp_path;

    #设置缓存目录,并设置Web缓存区名称为cache_one,内存缓存空间大小为256m,7天没有被访问的内容自动清除,硬盘缓存空间大小为40GB。
    proxy_cache_path /mydata/proxy_cache_path levels=1:2 keys_zone=cache_one:256m inactive=7d max_size=80g;

    #启用html、jsp...<meta>标签不缓存的设置
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;


    
    ################################################集群 ###################################################    

    #动态资源集群
    upstream dynamic {
        ip_hash;#解决跨域问题
        server 127.0.0.1:8080 weight=1;
    } 


    #静态资源集群(一般由nginx管理,因为nginx处理静态资源性能好,如果服
    #务器有限,也可以部署在代理服务器本地)
    upstream static {
        ip_hash;#解决跨域问题
        server 127.0.0.1:8081 weight=1;
    }
	
	#后台资源集群
	upstream admin {
		ip_hash;#解决跨域问题
        server 127.0.0.1:9070 weight=1;
	}


    ################################################Nginx  web代理###################################################    
    server {

		listen 80;
        proxy_intercept_errors on;
        server_name web;
        location / {
            proxy_pass http://dynamic;
        }
		#用于清除缓存的url设置
        #假设一个URL为demo/test.gif,那么就可以通过访问/purge/demo/test.gif清除该URL的缓存。
        location ~ /purge(/.*) {
            #设置只允许指定的IP或IP段才可以清除URL缓存
            allow 127.0.0.1;
            allow 183.233.212.166;
            deny all;
            proxy_cache_purge cache_one $host$1$is_args$args;
        }
        location ~ .*\.(js|css|ico|jpg|jpeg|png|JPG|JPEG|PNG|eot|svg|ttf|woff) {
            proxy_pass http://static;
        }
        location ~ .*$ {
            proxy_pass http://dynamic;
        }
        location = /error.html {
          # 放错误页面的目录路径。
          root  /mydata/program/tomcat-7.0/webapps/ROOT/error;
        }
    }
	
	################################################Nginx  admin代理(获取后台房源图片)###################################################    
	server {

		listen 9080;
        server_name admin;
        
		#用于清除缓存的url设置
        #假设一个URL为demo/test.gif,那么就可以通过访问/purge/demo/test.gif清除该URL的缓存。
        location ~ /purge(/.*) {
            #设置只允许指定的IP或IP段才可以清除URL缓存
            allow 127.0.0.1;
            allow 183.233.212.166;
            deny all;
            proxy_cache_purge cache_one $host$1$is_args$args;
        }
        location ~ /upload(/.*)\.(ico|jpg|jpeg|png|JPG|JPEG|PNG) {
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
			add_header 'Access-Control-Allow-Methods' '*';
			proxy_cache cache_one; #设置资源缓存的zone
            proxy_cache_key $host$uri$is_args$args; #设置缓存的key,以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
            proxy_cache_valid 200 304 12h;  #对不同的HTTP状态码设置不同的缓存时间
			proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
			proxy_hide_header Cache-Control;
			proxy_hide_header Set-Cookie;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For  $remote_addr;
			#增加一个header字段方便在浏览器查看是否击中缓存(生产中可注释)
            add_header X-Cache '$upstream_cache_status from $host';
            root /mydata/mz_images/;
			expires 15d; #缓存15天
        }
		location ~ /ueditor(/.*)\.(ico|jpg|jpeg|png|JPG|JPEG|PNG) {
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
			add_header 'Access-Control-Allow-Methods' '*';
			proxy_cache cache_one; #设置资源缓存的zone
            proxy_cache_key $host$uri$is_args$args; #设置缓存的key,以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
            proxy_cache_valid 200 304 12h;  #对不同的HTTP状态码设置不同的缓存时间
			proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
			proxy_hide_header Cache-Control;
			proxy_hide_header Set-Cookie;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For  $remote_addr;
			#增加一个header字段方便在浏览器查看是否击中缓存(生产中可注释)
            add_header X-Cache '$upstream_cache_status from $host';
            root /mydata/mz_images/;
			expires 15d; #缓存15天
        }
		location ~ .*$ {
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
			add_header 'Access-Control-Allow-Methods' '*';
            proxy_pass http://admin;
			client_max_body_size   10m;
        }
    }


    #静态资源服务器,这里监听本地8081端口,因为静态资源服务器和代理服务器是同一台机器,所以有如下配置
    #如果是独立的服务器,直接在集群upstram配置即可。
    server{
        listen 8081;
        server_name static;
		
        location ~ .*\.(js|css|ico|jpg|jpeg|png|JPG|JPEG|PNG|eot|svg|ttf|woff) {
            proxy_cache cache_one; #设置资源缓存的zone
            proxy_cache_key $host$uri$is_args$args; #设置缓存的key,以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
            proxy_cache_valid 200 304 12h;  #对不同的HTTP状态码设置不同的缓存时间
			proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
			proxy_hide_header Cache-Control;
			proxy_hide_header Set-Cookie;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For  $remote_addr;
			#增加一个header字段方便在浏览器查看是否击中缓存(生产中可注释)
            add_header X-Cache '$upstream_cache_status from $host';
                    
            #所有静态文件直接读取硬盘
            #root /app/tomcat7/webapps/ROOT;
			proxy_pass http://dynamic;
            expires 15d; #缓存15天
        }
		
    }
}

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    利用nginx实现动静分离和负载均衡 by 李乐,杨.doc

    【Nginx 介绍】 Nginx 是一款高性能的 HTTP 和...总结起来,利用 Nginx 实现动静分离和负载均衡,可以有效地优化网站性能,提高服务的可用性和可靠性。Nginx 的高性能和易用性使其成为现代 Web 架构中的重要组成部分。

    nginx配置优化+负载均衡+动静分离详解

    通过以上配置,我们可以看到Nginx不仅提供了丰富的配置选项来优化其自身性能,还能够有效地实现负载均衡和动静分离等功能,从而显著提升整个系统的性能和稳定性。这对于构建高性能Web应用来说至关重要。

    Nginx+Tomcat 动静分离实现负载均衡.rar

    这个“Nginx+Tomcat 动静分离实现负载均衡.rar”压缩包文件很可能是关于如何利用Nginx作为反向代理和负载均衡器,以及Tomcat作为Java应用服务器,来实现这两种技术的详细教程或指南。 首先,我们来理解一下“动静...

    【LINUX】Nginx + Tomcat 动静分离实现负载均衡

    本文详细介绍了如何使用 Nginx 和 Tomcat 实现动静分离负载均衡,包括 Nginx 配置文件、HTTP 配置、负载均衡组、代理参数和缓存配置等。通过合理配置 Nginx,可以提高系统的整体性能和可扩展性。

    nginx+tomcat 负载均衡简易配置与动静分离

    总结来说,"nginx+tomcat 负载均衡简易配置与动静分离"是通过Nginx作为反向代理,结合Tomcat应用服务器,实现静态内容和动态请求的分离处理,以及请求的负载均衡,从而达到高可用、高性能的Web服务架构。

    nginx配置优化+负载均衡+动静分离详解.zip_nginx_nginx 负载_优化_优化配置_负载均衡

    通过深入理解和实践这些Nginx的配置优化、负载均衡和动静分离技术,你可以构建一个高效、稳定且可扩展的Web服务环境,有效应对高并发访问,提升用户体验。"nginx配置优化+负载均衡+动静分离详解.txt"这个文件应该...

    Nginx++Keepalived+Tomcat负载均衡&动静分离

    本文主要介绍了Nginx、Keepalived和Tomcat的负载均衡和动静分离配置,旨在帮助读者了解如何搭建高可用、高性能的Web应用系统。 一、环境准备 在开始配置之前,需要准备好服务器、软件包和网络环境。服务器方面,...

    Nginx+Tomcat 动静分离实现负载均衡.docx

    Nginx+Tomcat 动静分离实现负载均衡 本文档将详细介绍如何使用 Nginx 和 Tomcat 实现动静分离,提高中间件运行性能和服务质量。 动静分离的重要性 在 web 项目中,Tomcat 是一个功能强大且全面的 web 容器,对...

    Nginx+tomcat配置集群负载均衡实例

    本实例将详细阐述如何通过Nginx配置集群负载均衡,以实现动静分离,提升系统性能和稳定性。 首先,Nginx是一款轻量级的Web服务器/反向代理服务器,以其高性能、稳定性以及低内存占用著称。它能处理静态文件请求,...

    Nginx各种配置(包括负载均衡、静态代理、动静分离)

    以上就是关于Nginx配置负载均衡、静态代理和动静分离的基本介绍。实际应用中,Nginx的配置会根据业务需求和服务器环境进行更复杂的调整,以达到最佳性能和稳定性。通过灵活配置Nginx,可以构建出高效、可靠的Web服务...

    Nginx作为动静分离、缓存与负载均衡初探1

    本篇文章将探讨如何利用Nginx实现动静分离、缓存功能,并进行基础的负载均衡配置。 一、动静分离 动静分离是一种优化网站性能的技术,它将动态内容(如PHP、Java等后端处理请求)和静态内容(如HTML、CSS、...

    nginx配置优化和负载均衡

    nginx配置优化+负载均衡+动静分离详解 每个请求按照ip的hash结果分配,同一个ip的访客固定访问一个后端服务器,可解决动态网页session共享问题

    Nginx配置负载均衡、动静分离、请求日志打印、日志切割、压缩、删除.md

    #### 一、Nginx配置负载均衡 **负载均衡**是Nginx的一项核心功能,它能帮助我们将客户端请求分发到不同的服务器上,从而提高系统的稳定性和可用性。 **1.1 配置示例** 要在Nginx中实现负载均衡,首先需要定义一个...

    linux安装nginx+keepalived,和tomcat负载均衡配置,动静分离配置,主备和双主模式

    至此,你已经成功配置了Nginx+Keepalived,实现了基于HTTP的负载均衡和动静分离。在主备模式下,如果主服务器出现问题,Keepalived会自动将流量切换到备用服务器。在双主模式下,两个服务器平分流量,当一个节点出现...

    Arch-03-15- Nginx+tomcat 配置负载均衡动静分离

    标题“Arch-03-15- Nginx+tomcat 配置负载均衡动静分离”涉及的是在Web服务器架构中使用Nginx与Tomcat的集成,通过配置实现负载均衡和动静态资源分离。这样的架构可以提高系统的可用性和响应速度,减轻后端应用...

    linux下的nginx+tomcat负载均衡简单原理

    "Linux 下的 Nginx+Tomcat 负载均衡简单原理" Linux 下的 Nginx+Tomcat 负载均衡简单原理是指通过 ...本文对 Nginx 服务器的安装、配置和负载均衡算法进行了详细的介绍,为读者提供了一个简单的 Nginx 配置文件实例。

    Nginx+keepalived+tomcat实现性负载均衡(包含需要的包)

    在构建高性能、高可用性的Web服务时,使用Nginx+keepalived+tomcat的组合可以实现强大的负载均衡和故障转移功能。这个方案的核心思想是利用Nginx作为前端反向代理服务器,通过keepalived来确保服务的高可用性,并将...

    nginx 配置 , 动静分离 及项目部署

    以下是一个简单的Nginx配置文件示例,展示了如何配置动静分离: ```nginx http { upstream backend { server 192.168.1.10:8080; # Tomcat服务器地址 server 192.168.1.11:8080; # 另一台Tomcat服务器地址 } ...

    详解Ngigx+Tomcat配置动静分离,负载均衡

    由于公司使用过Ngnix,对于刚接触Nginx来说,感觉有些好奇,于是研究了下。 本人在windows下使用的版本是nginx-1.8.1: 1. 启动Ngnix 双击nginx-1.8.1文件夹...3. Nginx配置 下面配置综合了网上的资料,记下,防止自己

Global site tag (gtag.js) - Google Analytics