码迷,mamicode.com
首页 > 其他好文 > 详细

nginx_1_基础以及安装

时间:2016-02-01 14:09:50      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

nginx
  web服务器
  反向代理
    web
    mail
 
  模块化的设计

  tengine

  varrnish,squid
    nginx: cache(disk)
    httpd: cache(disk,memory)

nginx基本的HTTP服务器特性:
  1.处理静态文件,索引文件以及自动索引;打开文件描述符缓存
  2.使用缓存加速反向代理;简单负载均衡以及容错
  3.远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;简单的负载均衡以及容错
  4.模块化的架构,过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理
  5.支持SSL,TLS SNI

nginx其他的HTTP服务器特性
  1.基于名字和IP的虚拟主机,不支持基于端口的虚拟主机
  2.Keep-alive和pipelined连接支持
  3.灵活的配置
  4.重新加载配置以及在线升级时,不需要终端正在处理的请求;./nginx -s reload
  5.自定义访问日志格式,带缓存的日志写操作以及快速日志轮转
  6.3xx-5xx错误代码重定向
  7.重写(rewrite)模块:使用正则表达式改变URL
  8.根据客户端地址执行不同的功能
  9.基于客户端IP地址和HTTP基本认证机制的访问控制
  10.支持验证HTTP referer
  11.支持PUT、DELETE、MKCOL、COPY以及MOVE方法
  12.支持FLV流和MP4流
  13.速度限制
  14.来自同一地址的同时连接数或请求数限制
  15.嵌入perl语言


架构和拓展性
  1.一个主进程和多个工作进程,工作进程以非特权用户运行
  2.支持的事件机制:kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、rt signals(Linux 2.2.19+)、/dev/poll(Solaris 7 11/99+)、event ports(Solaris 10)、select以及poll
  3.众多支持的kqueue特性包括EV_CLEAR、EV_DISABLE(临时禁止事件)、NOTE_LOWAT、EV_EOF,可用数据的数量,错误代码
  4.支持sendfile(FreeBSD 3.1+,Linux 2.2+, Mac OS X 10.5+)、sendfile64(Linux 2.4.21+)和sendfilev (Solaris 87/o1+)
  5.文件AIO(FreeBSD 4.3+,Linux 2.6.22+)
  6.DIRECTIO(FreeBSD 4.4+,Linux 2.4+,Solaris 2.6+,Mac OS X)
  7.支持accept-filters(FreeBSD 4.1+,NetBSD 5.0+)和TCP_DEFER_ACCEPT(Linux 2.4+)
  8.10000个非活跃的 HTTP keep-alive 连接仅占用月2.5M内存
  9.尽可能避免数据拷贝操作


  Nginx 的进程由一个master进程以及多个worker进程组成,如果配置了缓存,则还有缓存加载器进程 (cache loader) 和缓存管理器进程(cache manager) ,主进程由root用户启动,worker等其他进程由非特权用户运行
    主进程主要完成以下工作:
       1.读取并验证配置信息
       2.创建、绑定及关闭套接字
       3.启动、终止及维护worker进程的个数
       4.无需终止服务而重新配置的工作特性
       5.控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本
       6.重新打开日志文件
       7.编译嵌入式perl脚本

    worker进程主要完成的任务:
       1.接收、传入并处理来自客户端的连接
       2.提供反向代理及过滤功能
       3.nginx任何能完成的其他任务

    cache loader 进程主要完成的任务
       1.检查缓存存储中的缓存对象
       2.使用缓存元数据建立内存数据库

    cache manager 进程的主要任务
       1.缓存失效以及过期检验

nginx 配置有着几个不同的上下文: main、http、server、upstream和location(还有实现邮件服务反向代理的mail)


安装nginx
  添加nginx用户
    # groupadd -r nginx
    # useradd -r -g nginx nginx
 
 
  编译和安装
  # ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --http-proxy-temp-path=/var/tmp/nginx/proxy --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre

  # make && make install




为nginx提供启动脚本

# vim /etc/rc.d/init.d/nginx

#!/bin/bash
#
#chkconfig: 2345 85 15
#description: Nginx is HTTP server
#
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=`basename $nginx`
nginx_conf_file="/etc/nginx/nginx.conf"
lockfile="/var/lock/subsys/nginx"
nginx_pid="/var/run/nginx/nginx.pid"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 

mk_dir() {
    user=`$nginx -V 2>&1 | grep "configure arguments:" | sed ‘s/[^*]*--user=\([^ ]*\).*/\1/g‘ -`
    options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
   
    for opt in $options; do
       if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
         value=`echo $opt | cut -d "=" -f 2`
         if [ ! -d "$value" ]; then
            #echo "creating" $value
            mkdir -p $value && chown -R $user $value
         fi
       fi
    done
   }

start() {
    [ -x $nginx ] || exit 5
    [ -f $nginx_conf_file ] || exit 6
    if [ -e $nginx_pid ];then
       echo "nginx already running...."
       exit 1
    fi
    echo -n $"Starting $prog: "
    mk_dir
    daemon $nginx -c $nginx_conf_file
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
   }

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
   }


reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    retval=$?
    echo
   }

configtest() {
    $nginx -t -c $nginx_conf_file
   }

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    configtest || return $?
    stop
    sleep 1
    start
    ;;
reload)
    reload
    ;;
status)
    status $prog
    retval=$?
    ;;
configtest)
    configtest
    ;;
*)
    echo $"Usage: $0 {start|stop|status|restart|reload|configtest}"
    exit 2
    ;;
esac


添加为服务,并将启动级别设为2345
# chmod +x /etc/rc.d/init.d/nginx
# chkconfig --add nginx
# chkconfig --level 2345 nginx on



nginx_1_基础以及安装

标签:

原文地址:http://www.cnblogs.com/Xhale/p/5174629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!