`
starbhhc
  • 浏览: 648784 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

nginx负载均衡初探(一)

 
阅读更多

nginx [engine x] 是由 Igor Sysoev开发的一个HTTP 服务器和mail 代理服务器软件.虽然刚刚发布两年多, Nginx 因其稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 超越Apache的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中有新浪、网易、腾讯等门户网站,六间房、酷6等视频分享网站,Discuz!、水木社区等知名论坛,豆瓣、YUPOO等新兴Web 2.0网站。Nginx 在国内的应用正在不断发展壮大!新近发现Nginx 应用在国内越发火热了,很多网站都开始转向Nginx 了。

     一,首先下载nginx 0.7.52的windows版本,下载地址:http://sysoev.ru/nginx/nginx-0.7.52.zip,并到PHP 官方下载php。
  然后,解压nginx-0.7.52.zip到C盘的根目录,并将目录名改为nginx。执行下列操作
   1, cd nginx          
   2, start nginx 
   这样,nginx就启动了。打开浏览器,输入http://127.0.0.1/ 就可以看到nginx的欢迎页面了。nginx的其他命令 
   nginx -s stop   //停止nginx 
   nginx -s reload //重新加载配置文件 
   nginx -s quit //退出nginx

 

#网站的图片较多,更改较少,将它们在浏览器本地缓存15天
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     {
expires      15d;
     }
     #网站会加载很多JS、CSS,将它们在浏览器本地缓存1天
     location ~ .*\.(js|css)?$
     {
expires      1d;
     }
     location /(WEB-INF)/ {
     deny all;
     }
#设定本虚拟主机的访问日志
access_log  /host/nginx/logs/down/access.log  access;  

#日志的路径,每个虚拟机一个,不能相同
server_name_in_redirect  off;

 

实验环境

win7+ubuntu(vmware)

win7 tomcat(ip and por:192.168.0.108:8080)

linux tomcat(ip and por:192.168.110.129:8080)

 

在ubuntu中安装nginx(sudo apt-get install nginx),默认安装在etc/nginx

在两台tomcat的webapps下的ROOT中,为了表示出访问的是那一台tomcat,替换index.html以及index.jsp,其中分别写入linux和windows。

nginx的启动关闭和测试命令如下:

  1. 关闭nginx  
  2. zhengx@zhengx-virtual-machine:~$ sudo pkill -9 nginx  
  3. 测试nginx是否成功配置  
  4. zhengx@zhengx-virtual-machine:~$ sudo nginx -t  
  5. nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored  
  6. nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful  
  7. 开启nginx  
  8. zhengx@zhengx-virtual-machine:~$ sudo nginx   
  9. nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored  
  10. zhengx@zhengx-virtual-machine:~$   

其中nginx.conf的配置文件如下所示

  1. user www-data;  
  2. worker_processes 4;  
  3. pid /var/run/nginx.pid;  
  4.   
  5. events {  
  6.     worker_connections 768;  
  7.     # multi_accept on;  
  8. }  
  9.   
  10. http {  
  11.   
  12.     sendfile on;  
  13.     tcp_nopush on;  
  14.     tcp_nodelay on;  
  15.     keepalive_timeout 65;  
  16.     types_hash_max_size 1024;  
  17.       
  18.   
  19.     include /etc/nginx/mime.types;  
  20.     default_type application/octet-stream;  
  21.   
  22.   
  23.     access_log /var/log/nginx/access.log;  
  24.     error_log /var/log/nginx/error.log;  
  25.   
  26.       
  27.     gzip on;  
  28.     upstream   localhost {    
  29.                 
  30.   
  31.               #win7的tomcat访问url  
  32.               server   192.168.0.108:8080;    
  33.   
  34.               #linux的tomcat访问url  
  35.               server   192.168.110.129:8080;    
  36.         }    
  37.       
  38.     server {    
  39.         listen 80;    
  40.         server_name  localhost;    
  41.         charset utf-8;    
  42.         location / {    
  43.             root   html;    
  44.             index  index.html index.htm;    
  45.             #跳转到win7上的tomcat  
  46.             proxy_pass         http://192.168.0.108:8080;  
  47.             proxy_set_header  X-Real-IP  $remote_addr;    
  48.             client_max_body_size  100m;    
  49.         }    
  50.         
  51.         
  52.         location ~ ^/(WEB-INF)/ {     
  53.             deny all;     
  54.         }     
  55.         
  56.         error_page   500 502 503 504  /50x.html;    
  57.         location = /50x.html {    
  58.             root   html;    
  59.         }    
  60.         
  61.         }    
  62.     include /etc/nginx/server.conf;  
  63.     include /etc/nginx/conf.d/*.conf;  
  64.     include /etc/nginx/sites-enabled/*;  
  65. }  

为了便于维护把nginx.conf拆分一部分代码出来分别是upstream.conf和location.conf

nginx.conf的配置文件如下:

  1. user www-data;  
  2. worker_processes 4;  
  3. pid /var/run/nginx.pid;  
  4.   
  5. events {  
  6.     worker_connections 768;  
  7.     # multi_accept on;  
  8. }  
  9.   
  10. http {  
  11.   
  12.     sendfile on;  
  13.     tcp_nopush on;  
  14.     tcp_nodelay on;  
  15.     keepalive_timeout 65;  
  16.     types_hash_max_size 1024;  
  17.       
  18.   
  19.     include /etc/nginx/mime.types;  
  20.     default_type application/octet-stream;  
  21.   
  22.   
  23.     access_log /var/log/nginx/access.log;  
  24.     error_log /var/log/nginx/error.log;  
  25.   
  26.       
  27.     gzip on;  
  28.     include /etc/nginx/upstream.conf;  
  29.       
  30.     server {    
  31.         listen 80;    
  32.         server_name  localhost;    
  33.         charset utf-8;    
  34.         include /etc/nginx/location.conf;  
  35.         }    
  36.       
  37.     include /etc/nginx/conf.d/*.conf;  
  38.     include /etc/nginx/sites-enabled/*;  
  39. }  

upstream.conf的配置文件如下:

  1. upstream   localhost {    
  2.               server   192.168.0.108:8080;    
  3.               server   192.168.110.129:8080;    
  4. }    

location.conf的配置文件如下:

  1. location / {    
  2.             root   html;    
  3.             index  index.html index.htm;    
  4.             #去找域名为localhost的upstream  
  5.             proxy_pass         http://localhost;  
  6.             proxy_set_header  X-Real-IP  $remote_addr;    
  7.             client_max_body_size  100m;    
  8.         }    
  9.         
  10.         
  11.         location ~ ^/(WEB-INF)/ {     
  12.             deny all;     
  13.         }     
  14.         
  15.         error_page   500 502 503 504  /50x.html;    
  16.         location = /50x.html {    
  17.             root   html;    
  18.         }    
  19.         
分享到:
评论

相关推荐

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

    【Nginx 作为动静分离、缓存与负载均衡初探1】 在现代Web服务架构中,Nginx因其高效、稳定以及丰富的功能而被广泛用作反向代理服务器、负载均衡器和静态内容服务器。本篇文章将探讨如何利用Nginx实现动静分离、缓存...

    Nginx开发从入门到精通

    - **负载均衡模块**:Nginx提供了多种负载均衡策略,如轮询、最少连接等,用于将请求分发到不同的后端服务器。 #### 下篇:Nginx原理解析 ##### 高性能服务器设计 - **C10K问题**:C10K问题是早期网络服务器面临...

    Nginx 应用技术指南

    **14.2 Nginx负载均衡实例** Nginx支持多种负载均衡算法,如轮询(round-robin)、最少连接(least-connected)等。 #### 十五、Nginx原理代码分析 **15.1 剖析Nginx等单线程服务器设计原理与性能优势** 深入解析Nginx...

    Nginx开发从入门到精通.pdf.docx

    - 随着互联网技术的发展,Nginx逐渐成为了处理动态内容、负载均衡、反向代理等任务的重要工具之一。 2. **使用简介**: - Nginx可以作为独立的Web服务器运行,也可以与后端的其他Web应用服务器(如Apache)配合...

    大型、高负载网站架构和应用初探

    3. **负载均衡**:利用负载均衡技术将请求合理分配到不同的服务器上,避免单点故障。 4. **缓存机制**:引入缓存来减少数据库的访问压力,提高系统响应速度。 5. **分布式存储**:采用分布式文件系统或数据库来存储...

    CMS模块化开发和演讲稿-大型、高负载网站架构和应用初探(ppt)

    1. 高并发处理:采用负载均衡技术分散流量,如Nginx、HAProxy等;利用缓存技术减轻数据库压力,如Redis、Memcached。 2. 数据库优化:水平扩展(Sharding)、垂直拆分、读写分离,以及使用NoSQL数据库配合关系型...

    架构文章集合,搜索引擎,系统可伸缩性

    文档可能介绍了各种负载均衡算法,如轮询、最少连接数、IP哈希等,以及硬件和软件负载均衡器的比较,例如Nginx、HAProxy等。 4. **大型Web2.0站点构建技术初探**:Web2.0的特性,如用户生成内容和社交网络,对系统...

    基于5G与大数据技术的物联网智慧工地平台初探.pdf

    为了应对高并发访问,接口服务网关一般采用Nginx负载均衡集群的设计。这样的设计能够在高流量情况下合理分配资源,确保系统的稳定性和高可用性。 在数据库设计方面,为满足业务负载的要求,系统采用主从模式以应对...

    web开发大礼包

    这涉及到数据库查询优化、分布式缓存如Memcached或Redis的使用、负载均衡器如Nginx或HAProxy的配置,以及代码层面的性能调优。 2. **Web2.0站点构建技术**: - 《大型Web2.0站点构建技术初探》涵盖了AJAX(异步...

    Asp.net Core 初探(发布和部署Linux)

    nginx是一个高性能的HTTP和反向代理服务器,同时也常用于作为负载均衡器。在安装nginx之后,需要对nginx进行配置,以便将外部的HTTP请求转发到应用服务器。配置文件通常位于/etc/nginx/sites-available/目录下,需要...

    StepDone:学习flask..

    若要部署到生产环境,可考虑使用Gunicorn或uWSGI等WSGI服务器,再配合Nginx进行反向代理和负载均衡。 总结,"StepDone"项目是一个学习Flask的好例子,它涵盖了Flask的基本使用,包括路由、视图、模板渲染以及可能的...

    flaskProject

    虽然Flask轻量级,但依然可以部署到各种服务器环境,如本地的Werkzeug服务器、Gunicorn或uWSGI,配合Nginx反向代理进行负载均衡。在生产环境中,通常会使用虚拟环境管理依赖,并通过Gunicorn或uWSGI来提高性能。 ...

Global site tag (gtag.js) - Google Analytics