nginx 負載均衡

Nginx 負載均衡實踐
css

1、安裝源碼包
html

下載安裝 pcre-8.32.tar.gznode

1. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gzlinux

2. tar zxvf pcre-8.32.tar.gznginx

3. cd pcre-8.32c++

4. ./configure  (注:configure: error: You need a C++ compiler for C++ support.   yum install -y gcc gcc-c++)web

5. make && make install 後端


下載安裝nginx-1.2.8.tar.gz緩存

  1. cd /usr/local/src  服務器

  2. wget http://nginx.org/download/nginx-1.2.8.tar.gz  

  3. tar -zxvf nginx-1.2.8.tar.gz  

  4. cd nginx-1.2.8  

  5. ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/src/pcre-8.32 --user=nginx --group=nginx --with-http_stub_status_module

    (注:./configure: error: the HTTP gzip module requires the zlib library.   yum install -y zlib-devel)  

  6. make  

  7. make install  

注:--with-pcre 指定pcre的源碼目錄,若是要安裝zlib的話也是這樣,添加個--with-zlib,後面加個源碼路徑


2、nginx配置(nginx負載均衡的最簡化模型

  1. worker_processes 1;    

  2. events {    

  3. worker_connections 1024;    

  4. }    

  5. http{    

  6.    upstream myproject {    

  7.    #這裏指定多個源服務器,ip:端口,80端口的話可寫可不寫    

  8.        server 192.168.43.158:80;    

  9.        server 192.168.41.167;    

  10.    }    

  11.    server {    

  12.        listen 8080;    

  13.        location / {    

  14.            proxy_pass http://myproject;    

  15.        }    

  16.    }    

  17. }


3、詳細配置nginx

/usr/local/nginx/conf/nginx.conf

  1. #運行用戶    

  2. user nginx nginx;    

  3. #啓動進程    

  4. worker_processes 2;    

  5. #全局錯誤日誌及PID文件    

  6. error_log logs/error.log notice;    

  7. pid logs/nginx.pid;    

  8. #工做模式及每一個進程鏈接數上限    

  9. events {    

  10.    use epoll;    

  11.    worker_connections 1024;     #因此nginx支持的總鏈接數就等於worker_processes * worker_connections  

  12. }    

  13. #設定http服務器,利用它的反向代理功能提供負載均衡支持    

  14. http {    

  15.    #設定mime類型    

  16.    include mime.types;  #這個是說nginx支持哪些多媒體類型,能夠到conf/mime.types查看支持哪些多媒體  

  17.    default_type application/octet-stream;   #默認的數據類型  

  18.    #設定日誌格式    

  19.    log_format main '$remote_addr - $remote_user [$time_local] '  

  20.    '"$request" $status $bytes_sent '  

  21.    '"$http_referer" "$http_user_agent" '  

  22.    '"$gzip_ratio"';    

  23.    log_format download '$remote_addr - $remote_user [$time_local] '  

  24.    '"$request" $status $bytes_sent '  

  25.    '"$http_referer" "$http_user_agent" '  

  26.    '"$http_range" "$sent_http_content_range"';    

  27.    #設定請求緩衝    

  28.    client_header_buffer_size 1k;    

  29.    large_client_header_buffers 4 4k;    

  30.    #開啓gzip模塊    

  31.    #gzip on;    

  32.    #gzip_min_length 1100;    

  33.    #gzip_buffers 4 8k;    

  34.    #gzip_types text/plain;    

  35.    #output_buffers 1 32k;    

  36.    #postpone_output 1460;    

  37.    #設定access log    

  38.    access_log logs/access.log main;    

  39.    client_header_timeout 3m;    

  40.    client_body_timeout 3m;    

  41.    send_timeout 3m;    

  42.    sendfile on;    

  43.    tcp_nopush on;    

  44.    tcp_nodelay on;    

  45.    keepalive_timeout 65;    

  46.    #設定負載均衡的服務器列表    

  47.    upstream mysvr {    

  48.        #weigth參數表示權值,權值越高被分配到的概率越大  

  49.        server 192.168.207.129:80 weight=5;    

  50.        server 192.168.207.130:8080 weight=5;    

  51.        server 192.168.207.131:8080 weight=2;  

  52.    }    

  53.    server { #這個是設置web服務的,監聽8080端口  

  54.        listen        8080;  

  55.        server_name    192.168.207.131;  

  56.        index     index.html index.htm;  

  57.        root        /var/www/html;  

  58.        #error_page     500 502 503 504    /50x.html;  

  59.        #location = /50x.html {  

  60.        #    root     html;  

  61.        #}  

  62.        }  

  63.    #設定虛擬主機    

  64.    server {    

  65.        listen 80;    

  66.        server_name 192.168.207.131;    

  67.        #charset gb2312;    

  68.        #設定本虛擬主機的訪問日誌    

  69.        access_log logs/three.web.access.log main;    

  70.        #若是訪問 /img/*, /js/*, /css/* 資源,則直接取本地文件,不經過squid    

  71.        #若是這些文件較多,不推薦這種方式,由於經過squid的緩存效果更好    

  72.        #location ~ ^/(img|js|css)/{    

  73.        #   root /data3/Html;    

  74.        #   expires 24h;  

  75.        #}  

  76.            #對 "/" 啓用負載均衡    

  77.        location / {    

  78.            proxy_pass http://mysvr;  #以這種格式來使用後端的web服務器  

  79.            proxy_redirect off;    

  80.            proxy_set_header Host $host;    

  81.            proxy_set_header X-Real-IP $remote_addr;    

  82.            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    

  83.            client_max_body_size 10m;    

  84.            client_body_buffer_size 128k;    

  85.            proxy_connect_timeout 90;    

  86.            proxy_send_timeout 90;    

  87.            proxy_read_timeout 90;    

  88.            proxy_buffer_size 4k;    

  89.            proxy_buffers 4 32k;    

  90.            proxy_busy_buffers_size 64k;    

  91.            proxy_temp_file_write_size 64k;  

  92.        }    

  93.        #設定查看Nginx狀態的地址 ,在安裝時要加上--with-http_stub_status_module參數  

  94.        location /NginxStatus {    

  95.            stub_status on;    

  96.            access_log on;    

  97.            auth_basic "NginxStatus";    

  98.            auth_basic_user_file conf/htpasswd;     #設置訪問密碼,htpasswd -bc filename username password  

  99.        }  

  100.    }  

  101. }  


4、啓動nginx及查看效果

useradd nginx  

/usr/local/nginx/sbin/nginx   //啓動


http://ip:port 屢次訪問能夠查看效果(ie緩存會影響效果,必須清空緩存)

或者在linux 系統下使用elinks http://ip:port or curl http://ip:port

相關文章
相關標籤/搜索