编译安装nginx

 

1.安装依赖包

yum -y install openssl openssl-devel zlibzlib-devel gcc gcc-c++

2.安装pcre

安装nginx所需要的pcre库(为了使nginx支持http rewrite模块)

mkdir -p/home/darren/tools
cd /home/darren/tools/
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
tar zxf pcre-8.37.tar.gz
cd pcre-8.37
./configure
make && makeinstall
cd ..
如果安装完以后需要重新安装pcre,则需要
rm -rf/usr/local/share/man/man3/pcre*


3.安装nginx

创建nginx用户

groupaddnginx
useradd nginx-s /sbin/nologin -M
cd /home/darren/tools/
wget http://nginx.org/download/nginx-1.8.1.tar.gz
wgethttp://nginx.org/download/nginx-1.2.6.tar.gz
tarzxf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && makeinstall

 

检查nginx安装

/usr/local/nginx/sbin/nginx -v
#提示错误:/usr/local/nginx/sbin/nginx: error while loading shared libraries:libpcre.so.1: cannot open shared object file: No such file ordirectory
yum install pcre -y 则不会出现这种错误
find /-name libpcre.so.1
/usr/local/lib/libpcre.so.1
echo '/usr/local/lib/'>>/etc/ld.so.conf
ldconfig



检查语法

/usr/local/nginx/sbin/nginx -t

        

启动nginx服务

/usr/local/nginx/sbin/nginx
netstat -lnt

浏览器中输入10.1.1.1测试



附一个一键安装脚本:

#!/bin/sh
#for one install nginx
#for wangjiadongge
 
#install centos source
rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
 
#install plugin
yum install gcc gcc-c++ openssl-devel pcre-devel zlib-devel -y
 
#create user and group
groupadd nginx 
useradd nginx -g nginx -s /sbin/nologin -M
 
#cd /tmp/
[ -d /tmp/download ] || mkdir -p /tmp/download
cd /tmp/download/
 
 
#wget nginx from www.nginx.org
wget http://nginx.org/download/nginx-1.8.1.tar.gz 
tar zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

chown -R nginx.nginx /usr/local/nginx/
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local 
#end


#nginx负载均衡脚本

mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
echo "
user  nginx;
worker_processes  4;
events {
    use epoll;
    worker_connections  10240;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;
    sendfile        on;  
    keepalive_timeout  120;
    include conf.d/*.conf;
}

" >>/usr/local/nginx/conf/nginx.conf


mkdir /usr/local/nginx/conf/conf.d
echo "
server {
        listen       80;
        server_name  login.xiaodongge.com;
        access_log   logs/host.access.log  main;

        location / {
            proxy_pass http://loginserver;
        }
}

upstream loginserver {
        server 10.86.10.21:8300;
        server 10.86.10.22:8300;
        server 10.86.10.23:8300;
    }


解释:nginx做负载均衡默认是轮询负载,下面逐一来看:

#默认的负载方式,轮询
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp1;
        }
    }
#最小连接数,哪台服务器连接的最少就向哪台服务器上负载
upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
#ip hash如果一个连接建立,就会始终和这台服务器连接
upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}
#权重,自定义设置哪台服务器负载的多
  upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }