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

Nginx源码编译安装及配置文件解读

2017-05-04 18:30 751 查看
编译安装 Nginx1.8

tar zxf nginx-1.8.0.tar.gz

cd nginx-1.8.0/

vim auto/cc/gcc
注释debug 可以减小安装后的大小
vim src/core/nginx.h
隐藏nginx版本信息
#解决软件包依赖性
yum install -y pcre-devle
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
#编译
--with-http_ssl_module   开启HTTP SSL模块 支持https请求

make
make install


Nginx 配置文件

vim /usr/local/lnmp/nginx/conf/nginx.conf

user nobody nobody;    #使用访问人员
worker_processes 2;    #cpu number
error_log /usr/local/nginx/logs/nginx_error.log crit; #nginx 的日志模式为crit
pid /usr/local/nginx/logs/nginx.pid;  #pid 在那个dir
worker_rlimit_nofile 51200; #打开文件数

events
{
use epoll;  #连接模式是epoll
worker_connections 6000; #单进程链接数6000
}

http
{
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
server_names_hash_bucket_size 3526; #服务器民资的hash表大小
server_names_hash_max_size 4096; # 上传文件大小限制
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
'$host "$request_uri" $status'
'"$http_referer" "$http_user_agent"'; #日志参数
sendfile on; 开启高效文件传输模式,sendfile指令制定nginx是否调用sednfile函数来输出文件,对于普通应用设为on,如果用来进行下载等应用磁盘io重负载应用,可设为off,以平衡磁盘与网络i/o处理速度,降低系统的负载。注意:如果图片显示不正常吧这个改为off;
tcp_nopush on; #防止网络阻塞
tcp_
4000
nodelay on; #防止网络阻塞
keepalive_timeout 30;  #长连接超时时间 单位秒 第一个参数指定了与client德keep-alive连接超时时间。服务区将>会在这个时间后关闭连接。可选第二个参数指定在响应头 keep-ative:timeout=time中德ti
me值。这个头能够让一些浏览器主动关闭连接。只羊服务器就不必去关闭连接了。
client_header_timeout 3m; # 指定等到client发送一个请求头的超时时间,仅当再一次read中,没有收到请求头才算超时。如果超时时间内,client没有发送任何东西,nginx返回状态吗408
client_body_timeout 3m; #该指令设置请求体的读超时时间,仅当再一次readstep中,没有得到请求体,就会超时
send_timeout 3m; #http核心模块指令,指令指定了发送给客户端应答后的超时时间,timeout是指没有进入完整的established状态。只完成了两次握手,如果超过这个时间客户端没有相应则关闭nginx连接
connection_pool_size 256; #为每个连接分配的内存池,内存吃小玉额定内存块,如果一个块大于内存池或者大于分页大小。那么他将被分配到内存池之外。如果位于内存池中较小的分配量没有足够的内存。那么将分配一个相同内存池大小的新块。
client_header_buffer_size 1k; #指定客户端请求头部的缓冲区大小
large_client_header_buffers 8 4k; #设置用于读取客户及请求头文件的最大数量和大小,一个请求线不能超过一个缓冲区的大小或414(请求uri太大)错误返回客户端。请求头字段不能超过一个缓冲区大小。范围客户端的400错误。缓冲去进分配需求。默认情况下,缓冲区的大小为8k字节。如果一个链接请求处理结束后转变为保持状态。这些缓冲区被释放。
request_pool_size 4k; #为每个请求分配的内存池,内存池用于小配额内存块,如果一个块大于内存池或者大于分页大小,那么它将被分配到内存池之外,如果位于内存池中较小的分配量没有足够的内存,那么将分配一个相同内存池大小的新块,这个指令仅有相当有限的效果
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m; #指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段。如果请求大于指定的值,客户端将收到一个”Request Entity Too Large” (413)错误。
记住,浏览器并不知道怎样显示这个错误
client_body_buffer_size 256k; #这个指令可以指定连接请求实体的缓冲区大小。
#如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
#默认值为两个内存分页大小值,根据平台的不同,可能是8k或16k。
#当请求头中的Content-Length字段小于指定的buffer size,那么Nginx将使用较小的一个,所以nginx并不总是为每一个请求分配这个buffer size大小的buffer。
client_body_temp_path /usr/local/nginx/client_body_temp; #指令指定连接请求实体试图写入的临时文件路径。
proxy_temp_path /usr/local/nginx/proxy_temp; #配置proxy_cache模块定义了从代理服务器接受到的数据存储临时文件的目录。到三级子目录层次结构可以用在下面的指定目录
fastcgi_temp_path /usr/local/nginx/fastcgi_temp; #定义了同上只不过是fastcgi
fastcgi_intercept_errors on; #定义是否传递4xx和5xx错误信息到客户端,或者允许ninx使用error_page处理错误
tcp_nodelay on; #
#一下是压缩设置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm application/xml;
include vhosts/*.conf;
}


虚拟主机配置文件在conf/vhosts下

默认虚拟主机

server
{
listen 80 default_server;
server_name localhost;
index index.html index.htm index.php;
root /tmp/123;
deny all;

}


其他虚拟主机

server
{
listen 80;
server_name tyzz.com;
index index.html index.htm index.php;
root /data/www;

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}

}


启动Nginx

[root@VM_168_83_centos vhosts]# /usr/local/nginx/sbin/nginx -t #检查语法
[root@VM_168_83_centos vhosts]# /usr/local/nginx/sbin/nginx #启动
[root@VM_168_83_centos vhosts]# /usr/local/nginx/sbin/nginx -s reload  平滑重启
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: