您的位置:首页 > 运维架构 > Nginx

nginx1.10.2集群安装

2016-11-02 03:11 232 查看
 

经典

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

配置

cd ~/nginx-1.10.2/

./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

测试

cd /usr/local/nginx-1.10.2/nginx/sbin/

./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_connections102400;  

}  

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            464k;  

 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/plainapplication/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 {  

server127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;  

server127.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_504error 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

<ValveclassName="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>

<ManagerclassName="com.radiadesign.catalina.session.RedisSessionManager"

    host="localhost"

    port="6379"

    database="0"

    maxInactiveInterval="60"

/>

 

安装redis

 

配置nginx

upstream backend{

       server192.168.1.246:8080;

       server192.168.1.246:9080;

}

server{

       proxy_redirectoff;

       proxy_set_headerHost $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>

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

<title>shared session</title>

</head>

<body>

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

       <br>tomcat(1、2、3)

</body>

</html>

反向代理

实例:

upstreamtornado {

       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.htmindex.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_502http_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;

   }

}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: