Nginx的安装与配置(Centos6.3)

来源:互联网 发布:电脑写字板软件下载 编辑:程序博客网 时间:2024/06/08 02:50

1.介绍

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。
--  来自百度百科

2.下载与安装(以nginx-0.7.69为例)

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

        2.2 确保系统已安装gcc、openssl-devel、pcre-devel和zlib-devel软件库;

        2.3 安装过程:

              [root@dadaxia home]# tar zxvf nginx-0.7.69.tar.gz 

              [root@dadaxia home]# cd nginx-0.7.69

              [root@dadaxia nginx-0.7.69]# ./configure \
              > --with-http_stub_status_module  --prefix=/opt/nginx

             [root@dadaxia nginx-0.7.69]#make

             [root@dadaxia nginx-0.7.69]#make install

其中参数 --with-http_stub_status_module 是为了启用 nginx 的 NginxStatus 功能,用来监控 Nginx 的当前状态。安装成功后 /opt/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。其中 Nginx 的配置文件存放于 conf/nginx.conf,Nginx 只有一个程序文件位于 sbin 目录下的 nginx 文件。确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。同时注意在防火墙打开80端口,不然别的机器无法访问。

nginx.conf配置如下:

# # # 1.Nginx的全局配置
# user 是个主模块指令,指定 Nginx Worker 进程运行用户以及用户组,默认由nobody账号运行。
user  nobody;


# worker_processes 是个主模块指令,指定了Nginx要开启的进程数。
# 每个Nginx进程平均耗费10M~12M内存。
# 根据经验,一般指定一个进程足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可。
worker_processes  1;


# error_log 是个主模块指令,用来定义全局错误日志文件。
# 日志输出级别有debug、info、notice、warn、error、crit可供选择,
# 其中,debug输出日志最为最详细,而crit输出日志最少。
error_log  logs/error.log  notice;


# pid 是个主模块指令,用来指定进程id的存储文件位置。
pid        logs/nginx.pid;


# worker_rlimit_nofile用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,
# 需要使用命令“ulimit -n 65535”来设置
worker_rlimit_nofile 65535;


# events指令是设定Nginx的工作模式及连接数上限。
events {
    # use是个事件模块指令,用来指定Nginx的工作模式。
# Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
# 其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,
# 不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。
# 对于Linux系统,epoll工作模式是首选
    use epoll;

# worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024.
# 最大客户端连接数由worker_processes和worker_connections决定,
# 即Max_client=worker_processes*worker_connections,
# 在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。
    # 进程的最大连接数受Linux系统进程的最大打开文件数限制,
# 在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
    worker_connections  65536;
}


# # # 2.HTTP服务器配置


http {
    # include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。
# 类似于Apache中的include方法。
    include       mime.types;

#default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,
# 例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
    default_type  application/octet-stream;


# log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。
# main为此日志输出格式的名称,可以在下面的access_log指令中引用。
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


log_format download '$remote_addr - $remote_user [$time_local] '
                        '"$request" $status $bytes_sent '
                        '"$http_referer" "$http_user_agent" '
                        '"$http_range" "$sent_http_content_range"';
    # 访问日志
access_log  logs/access.log  main;


# client_max_body_size 用来设置允许客户端请求的最大的单个文件字节数。
client_max_body_size  20m; 

# client_header_buffer_size 用于指定来自客户端请求头的headerbuffer大小。
# 对于大多数请求,1K的缓冲区大小已经足够,
# 如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K。
    client_header_buffer_size    32K;

# large_client_header_buffers 用来指定客户端请求中较大的消息头的缓存最大数量和大小, 
# “4”为个数,“128K”为大小,最大缓存量为4个128K。
    large_client_header_buffers  4 32k;

# sendfile参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
    sendfile        on;
    tcp_nopush     on;


# keepalive_timeout 设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
    keepalive_timeout  60;


# client_header_timeout 设置客户端请求头读取超时时间。
# 如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误。
client_header_timeout  10;

# client_body_timeout 设置客户端请求主体读取超时时间。
# 如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60。
    client_body_timeout    10;

# send_timeout指定响应客户端的超时时间。
# 这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
    send_timeout          10;



# # #  3.HttpGzip模块配置


# gzip用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流。
    gzip  on;

# gzip_min_length设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。
# 默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大。
    gzip_min_length  1k;

# gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,
# 默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
    gzip_buffers     4  16k;

# gzip_http_version用于设置识别HTTP协议版本,默认是1.1,
# 目前大部分浏览器已经支持GZIP解压,使用默认即可。
    gzip_http_version  1.1;

# gzip_comp_level用来指定GZIP压缩比,1 压缩比最小,处理速度最快;
# 9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
    gzip_comp_level  2;

# gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。
    gzip_types  text/plain application/x-javascript text/css application/xml;

# gzip_vary选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。
    gzip_vary  on;


# 多个 tomcat 负载均衡
upstream tomcats {
        #此处为轮询策略 换成你自己的tomcat地址
        #可以根据自己的需求配置多个tomcat,当某个地址无效时,nginx会自动切换
        server 192.168.142.128:8081;
        server 192.168.142.128:8082;
        server 192.168.142.128:8083;
    }

# # # 5.server虚拟主机配置 
# server标志定义虚拟主机开始,listen用于指定虚拟主机的服务端口,
# server_name用来指定IP地址或者域名,多个域名之间用空格分开。
# Index用于设定访问的默认首页地址,
# root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
# Charset用于设置网页的默认编码格式。
    server {

        listen       80;
        server_name  192.168.142.128 www.dadaxia.net;
        charset utf-8;
        access_log  logs/www.dadaxia.net.access.log  main;


location ~* \.(jpg|gif|png|swf|flv|wma|wmv|mp3|mmf|zip|rar)${
root /home/web/;
}

        location / {
   proxy_pass http://tomcats;
            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;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   300;
proxy_send_timeout      300;
proxy_read_timeout      300;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
        }


        #error_page  404              /404.html;


        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


    }   
}




0 0
原创粉丝点击