nginx1.10.2集群安装

 

经典

http://zyan.cc/nginx_php_v6/

下载

wget http://nginx.org/download/nginx-1.10.2.tar.gz

准备

yum install -y pcre-devel

yum install gcc gcc-c++ ncurses-devel perl

yum -y install make gcc gcc-c++ ncurses-devel

yum -y install zlib zlib-devel

yum -y install openssl openssl--devel (可选)

移动

mv nginx-1.10.2.tar.gz ~

解压

tar zxf nginx-1.10.2.tar.gz

配置

./configure --user=root --group=root --prefix=/usr/local/nginx-1.10.2

 

./configure --user=root --group=root --prefix=/usr/local/nginx-1.10.2 \--with-http_stub_status_module --with-http_ssl_module

./configure --user=root --group=root --prefix=/usr/local/nginx-1.10.2

--conf-path=/usr/local/nginx-1.10.2/nginx.conf \

--openssl-path=/usr/local/openssl-1.0.1c \

--with-http_ssl_module \

--with-pcre=/usr/local/pcre-8.21 \

--with-http-stub-status-module

编译安装

make && make install

测试

./nginx -t

启动

./nginx

/nginx -s reload

停止

./nginx -s stop

验证

netstat -ntlpu

http://ip

负载均衡配置(基于权重)

修改conf/nginx.conf

http {

     upstream cancer {

           server cancer01:8080 weight=5;

           server cancer02:8080 weight=5;

       }

       location / {

           proxy_pass http://cancer;

    }

}

 

负载均衡,完整如下:

user www www;

worker_processes 8;

pid /usr/local/nginx/nginx.pid;

worker_rlimit_nofile 102400;

events{

use epoll;

worker_connections 102400;  

}  

http{

  include       mime.types;  

  default_type  application/octet-stream;  

  fastcgi_intercept_errors on;  

  charset  utf-8;  

  server_names_hash_bucket_size 128;  

  client_header_buffer_size 4k;  

  large_client_header_buffers 4 32k;  

  client_max_body_size 300m;  

  sendfile on;  

  tcp_nopush     on;  

 

  keepalive_timeout 60;  

 

  tcp_nodelay on;  

  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;  

 

  gzip on;  

  gzip_min_length  1k;  

  gzip_buffers     4 16k;  

  gzip_http_version 1.1;  

  gzip_comp_level 2;  

  gzip_types       text/plain application/x-javascript text/css application/xml;  

  gzip_vary on;  

  

###2012-12-19 change nginx logs  

log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" ' 

              '$status $body_bytes_sent "$http_referer" ' 

              '"$http_user_agent"  $request_time $remote_addr';  

                  

upstream web_app {  

server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;  

server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;  

}  

 

####chinaapp.sinaapp.com  

server {  

    listen 80;  

    server_name  chinaapp.sinaapp.com;  

    index index.jsp index.html index.htm;  

    #发布目录/data/www  

    root  /data/www;  

   

    location / {  

           proxy_next_upstream http_502 http_504 error timeout invalid_header;  

           proxy_set_header Host  $host;  

           proxy_set_header X-Real-IP $remote_addr;  

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

           proxy_pass http://web_app;  

           expires      3d;  

    }

  }

}

负载均衡(种类)

nginx 的 upstream目前支持 4 种方式的分配

1)、轮询(默认),每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

2)、ip_hash,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 

3)、fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。 

4)、url_hash(第三方)

 

#定义负载均衡设备的 Ip及设备状态

upstream myServer {  

    server 127.0.0.1:9090 down;

    server 127.0.0.1:8080 weight=2;

    server 127.0.0.1:6060;

    server 127.0.0.1:7070 backup;

}

server{

proxy_pass http://myServer;

}

down 表示单前的server暂时不参与负载

weight  默认为1.weight越大,负载的权重就越大。

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout:max_fails 次失败后,暂停的时间。

backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

Nginx还支持多组的负载均衡,可以配置多个upstream  来服务于不同的Server.

会话共享

http://blog.csdn.net/xluren/article/details/16951247

http://blog.csdn.net/ning109314/article/details/41448143

http://yunan246.blog.163.com/blog/static/379555592014023230938/(好好好好好)

基于会话共享配置nginx+tomcat+redis

准备,jar包

apache tomcat 7.0.55

nginx 1.7.2

redis 2.8.9

 

tomcat-redis-session-manager-1.2-tomcat-7.jar

jedis-2.2.0.jar

commons-pool-1.6.jar

tcl8.5.11-src.tar.gz

 

修改tomct,/conf/context.xml

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />

<Manager className="com.radiadesign.catalina.session.RedisSessionManager"

     host="localhost"

     port="6379"

     database="0"

     maxInactiveInterval="60"

/>

 

安装redis

 

配置nginx

upstream backend{

       server 192.168.1.246:8080;

       server 192.168.1.246:9080;

}

server{

       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;

       proxy_pass  http://backend;

}

 

测试页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>shared session</title>

</head>

<body>

       <br>session id=<%=session.getId()%>

       <br>tomcat(1、2、3)

</body>

</html>

反向代理

实例:

upstream tornado {

       server 127.0.0.1:8888;

}

server {

       listen   80;

       root /root/nmapp2_venv;

       index index.py index.html;

       server_name server;

       location / {

              #if (!-e $request_filename) {

              #    rewrite ^/(.*)$ /index.py/$1 last;

              #}

       }

       location ~ /index\.py {

              proxy_pass_header Server;

              proxy_set_header Host $http_host;

              proxy_set_header X-Real-IP $remote_addr;

              proxy_set_header X-Scheme $scheme;

              proxy_pass http://tornado;

       }

}

 

Nginx 反向代理的指令不需要新增额外的模块,默认自带 proxy_pass 指令,只需要修改配置文件就可以实现反向代理。

再举一个例子吧。比如要配置后端跑 apache 服务的 ip 和端口,也就是说,我们的目标是实现通过 http://ip:port 能访问到你的网站。

只要新建一个 vhost.conf,加入如下内容(记得修改 ip 和域名为你的 ip 和域名)。修改nginx.conf,添加 include quancha.conf 到http{}段, reload nginx就可以了。

 

反向代理模板:

## Basic reverse proxy server ##

upstream apachephp  {

    server ip:8080; #Apache

}

## Start www.nowamagic.net ##

server {

    listen 80;

    server_name  www.nowamagic.net;

    access_log  logs/quancha.access.log  main;

    error_log  logs/quancha.error.log;

    root   html;

    index  index.html index.htm index.php;

    ## send request back to apache ##

    location / {

        proxy_pass  http://apachephp;

        #Proxy Settings

        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;

        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

        proxy_max_temp_file_size 0;

        proxy_connect_timeout      90;

        proxy_send_timeout         90;

        proxy_read_timeout         90;

        proxy_buffer_size          4k;

        proxy_buffers              4 32k;

        proxy_busy_buffers_size    64k;

        proxy_temp_file_write_size 64k;

   }

}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值