Redhat6.5 安装Nginx

一、安装包


nginx-1.13.8

  • 下载地址:http://nginx.org/en/download.html

ngx_http_lower_upper_case-master

  • 下载地址:https://github.com/replay/ngx_http_lower_upper_case/archive/master.zip

    该模块可以将字符串转换为大小写然后赋值给变量.


nginx-sticky-module-ng

  • 下载地址:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz

在使用负载均衡的时候会遇到会话保持的问题,常用的方法有:

  • ip hash,根据客户端的IP,将请求分配到不同的服务器上;
  • cookie,服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发布者;
    注意:cookie需要浏览器支持,且有时候会泄露数据

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route

  1. 客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
  2. 后端服务器处理完请求,将响应数据返回给nginx。
  3. 此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值。
  4. 客户端接收请求,并保存带route的cookie。
  5. 当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。

ngx_cache_purge

  • 下载地址:http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
    用于清除指定url的缓存

openssl

  • 下载地址:https://www.openssl.org/source/openssl-1.0.2n.tar.gz

nginx_ajp_module-master

  • 下载地址:https://github.com/yaoweibin/nginx_ajp_module/archive/master.zip
    nginx_ajp_module是nginx和tomcat使用ajp协议进行通信的模块

pcre-8.38

  • 下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。

三、安装Nginx

1.编译nginx

# pwd
/data/installPackage/build_nginx
# ll
total 976
drwxr-xr-x 2 root root   4096 Jan 20 12:39 module
-rw-r--r-- 1 root root 992237 Jan 20 11:30 nginx-1.13.8.tar.gz
# ll module/
total 7536
-rw-r--r-- 1 root root  140670 Jan 20 11:30 nginx_ajp_module-master.zip
-rw-r--r-- 1 root root  120603 Jan 15 03:25 nginx-sticky-module-ng.tar.gz
-rw-r--r-- 1 root root   12248 Dec 24  2014 ngx_cache_purge-2.3.tar.gz
-rw-r--r-- 1 root root    2489 Jan 20 12:11 ngx_http_lower_upper_case.zip
-rw-r--r-- 1 root root 5375802 Dec  7 21:47 openssl-1.0.2n.tar.gz
-rw-r--r-- 1 root root 2053336 Jan 20 11:30 pcre-8.38.tar.gz
# tar -zxvf nginx-1.13.8.tar.gz
# mkdir -p /data/app/nginx                          //创建安装目录
# cd module/                    
# unzip nginx_ajp_module-master.zip                 //解压
# tar -zxvf nginx-sticky-module-ng.tar.gz
# tar -zxvf ngx_cache_purge-2.3.tar.gz
# unzip ngx_http_lower_upper_case.zip
# tar -zxvf openssl-1.0.2n.tar.gz
# tar -zxvf pcre-8.38.tar.gz
# cd ../nginx-1.13.8
# pwd
/data/installPackage/build_nginx/nginx-1.13.8
# ./configure --prefix=/data/app/nginx --with-pcre=/data/installPackage/build_nginx/module/pcre-8.38 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --add-module=/data/installPackage/build_nginx/module/nginx_ajp_module-master --add-module=/data/installPackage/build_nginx/module/nginx-goodies-nginx-sticky-module-ng --add-module=/data/installPackage/build_nginx/module/ngx_cache_purge-2.3 --add-module=/data/installPackage/build_nginx/module/ngx_http_lower_upper_case-master --with-openssl=/data/installPackage/build_nginx/module/openssl-1.0.2n
# make
# make install

configure可以根据需求选择需要的模块

检查过程中可能会出现缺少依赖包的错误,
这里写图片描述
需要安装pcre-devel

#yum install pcre-devel

make过程中如果出现下面的错误,需按照gcc-c++
这里写图片描述

# yum install gcc-c++

如果make的时候报下面的错误
Redhat6.5 安装Nginx_第1张图片

可以把sticky模块中的文件ngx_http_sticky_misc.c按照下面的方式修改
Redhat6.5 安装Nginx_第2张图片

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

如果出现下面的错误
Redhat6.5 安装Nginx_第3张图片
可以删除之前解压的pcre-8.38,重新解压pcre-8.38.tar.gz。

检查成功后
Redhat6.5 安装Nginx_第4张图片

2.注册系统服务
在/data/nginx目录下创建名称为nginx的脚本

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
nginxd=/data/app/nginx/sbin/nginx
nginx_config=/data/app/nginx/conf/nginx.conf
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ -x $nginxd ] || exit 0
start() {
    echo -n $"Starting $prog: "
    daemon $nginxd -c ${nginx_config}
    RETVAL=$?
    echo
    if [ $RETVAL != 0 ];then
       echo "nginx already running...."
    fi  
}
stop() {
        echo $"Stopping $prog: "
        $nginxd -s stop
    RETVAL=$?
    echo
}
reload() {
    echo -n $"Reloading $prog: "
    $nginxd -s reload
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
    start)
            start
            ;;
    stop)
            stop
            ;;
    reload)
            reload
            ;;
    restart)
            stop
            start
            ;;
    status)
            status $prog
            RETVAL=$?
            ;;
    *)
            echo $"Usage: $prog {start|stop|restart|reload|status}"
            exit 1
esac
exit $RETVAL

复制刚创建的nginx脚本到/etc/init.d/目录下

# cp /data/nginx-1.12.2/nginx /etc/init.d/
# chmod 

3.测试系统服务

# service nginx start
# service nginx reload
# service nginx restart
# service nginx stop

你可能感兴趣的:(linux,redhat6-5)