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

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

2015-01-15 22:11 513 查看
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;

}

}

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