首页 > 代码库 > nginx

nginx

一、安装Nginx

#创建nginx用户

groupadd -r nginx

useradd -r -g nginx -s /bin/false -M nginx

#安装依赖包

yum install gcc openssl-devel pcre-develzlib-devel -y

 

#下载解压源码

cd /usr/src/

wget ftp://172.16.0.1/pub/Sources/sources/nginx/nginx-1.6.2.tar.gz

tar xf nginx-1.6.2.tar.gz

 

#编译安装

cd /usr/src/nginx-1.6.2

 

./configure --prefix=/usr/local/nginx--conf-path=/etc/nginx/nginx/nginx.conf --user=nginx --group=nginx--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 --with-http_ssl_module--with-http_stub_status_module --with-http_gzip_static_module--with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client--http-proxy-temp-path=/var/tmp/nginx/proxy--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi

 

make && make install

 

#启动nginx

mkdir /var/tmp/nginx/client -pv

/usr/local/nginx/sbin/nginx

 

#查看是否启动

lsof -i :80

[root@localhost sbin]# lsof -i :80

COMMAND  PID  USER   FD  TYPE DEVICE SIZE/OFF NODE NAME

nginx  22462  root    6u IPv4  57010      0t0 TCP *:http (LISTEN)

nginx   22463 nginx    6u IPv4  57010      0t0 TCP *:http (LISTEN)


#添加启动服务脚本

vi /etc/rc.d/init.d/nginx

#user nobody; 指定运行worker进程的用户

worker_processes  1; worker线程的个数,通常为物理CPU核心个数减1

 

#error_log logs/error.log;

#error_log logs/error.log  notice; 错误日志,后面是日志级别

#error_log logs/error.log  info;

#error_log /dev/null; 这样可以关闭日志记录

 

#pid       logs/nginx.pid; 指定nginxpid文件

 

#指定文件描述符数量
worker_rlimit_nofile 51200;

 

#工作模式及连接上限

events {
#use [ kqueue | rtsig | epoll | /dev/poll | select| poll ]; 使用的网络I/O模型

   worker_connections  1024; 单个进程的最大连接数

}

 

 

#设定http服务器

http {

    #设定浏览器请求的文件媒体类型

   include       mime.types;

   default_type application/octet-stream; 默认文件类型

 

    #设定日志格式

    #log_format main  ‘$remote_addr - $remote_user[$time_local] "$request" ‘

   #                  ‘$status$body_bytes_sent "$http_referer" ‘

   #                 ‘"$http_user_agent" "$http_x_forwarded_for"‘;

   

    #日志名称,和日志记录格式采用main以及存放位置

   #access_log  logs/access.log  main;

   

server_names_hash_bucket_size 128;
     #用于设置客户端请求的Header头缓冲区大小,大部分情况1KB大小足够。不能超过large_client_header_buffers缓冲区大小的设置
       client_header_buffer_size32k;
      #该指令用于设置客户端请求的Header头缓冲区大小,默认值为4KB
      large_client_header_buffers 4 32k;
    
      #设置客户端能够上传的文件大小,默认为1m
      client_max_body_size 8m;

 

    #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件。请求的资源由内核获取后不再经过用户空间直接由内核封装后响应给请求方

sendfile        on;

   #tcp_nopush     on; 防止网络阻塞

 

   #keepalive_timeout  0;

   keepalive_timeout  65; 保持连接的超时时长,默认为65s

 

fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      #该指令用于设置upstream模块等待FastCGI进程发送数据的超时时间,默认值为60s
      fastcgi_read_timeout 200;
      #该指令设置FastCGI服务器相应头部的缓冲区大小。通常情况,该缓冲区大小设置等于fastcgi_buffers指令设置的一个缓冲区的大小。
      fastcgi_buffer_size 64k;
      #该指令设置了读取FastCGI进程返回信息的缓冲区数量和大小。
      fastcgi_buffers 4 64k;
    
      fastcgi_busy_buffers_size 128k;
      fastcgi_temp_file_writer_size 128k;

 

   #gzip  on;开启gzip模块

#该指令允许压缩的页面最小字节数
gzip_min_length 1k;
gzip_buffers 4 16k; #压缩缓冲区
#识别http的协议版本。
gzip_http_version 1.1;
#gzip压缩比,1 压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu
gzip_comp_level 2;
gzip_proxied any;#nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩)
#匹配mime类型进行压缩,无论是否指定,text/html类型总是会被压缩的。
gzip_types text/plain application/x-javascripttext/css application/xml;
gzip_vary on;#http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持
#所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

 

    #定义一个虚拟主机

   server {

       listen       80; 虚拟机监听的服务器地址和端口号

       server_name  localhost; 可跟多个主机名,主机名可以使用通配符和正则表达式(~

 

       #charset koi8-r; 字符集,网站编码

 

       #access_log  logs/host.access.log  main; 设定本虚拟机的访问日志

 

       #允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理

       location / {

           root   html; 设置web资源路径映射,用于指明请求的URL所对应的文档的根目录路径

           index  index.html index.htm; 默认的主页面

       }

 

       #error_page  404              /404.html; 根据http状态码重定向错误页面

 

       # redirect server error pages to the static page /50x.html

       #

       error_page   500 502 503 504  /50x.html; 根据http状态码重定向错误页面

       location = /50x.html {

           root   html;

       }

 

       # proxy the PHP scripts to Apache listening on 127.0.0.1:80

       #php脚本代理给127.0.0.1:80处理(比如可以做apache处理后端)

       #location ~ \.php$ {

       #    proxy_pass   http://127.0.0.1;

       #}

 

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

       #PHP脚本用FastCGI模式处理127.0.0.1:9000

       #location ~ \.php$ {

       #    root           html;

       #    fastcgi_pass   127.0.0.1:9000;

       #    fastcgi_index  index.php;

       #    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

       #    include        fastcgi_params;

       #}

 

       # deny access to .htaccess files, if Apache‘s document root

       # concurs with nginx‘s one

       #文件禁止访问

       #location ~ /\.ht {

       #    deny  all;

       #}

    }

 

 

 

    #HTTPS server

    #支持ssl协议的虚拟机相关设置

   #server {

   #    listen       443 ssl;

   #    server_name  localhost;

 

   #    ssl_certificate      cert.pem; 服务器证书

   #    ssl_certificate_key  cert.key; 服务器私钥

 

   #    ssl_session_cache    shared:SSL:1m;

   #    ssl_session_timeout  5m;

 

   #    ssl_ciphers  HIGH:!aNULL:!MD5;

   #    ssl_prefer_server_ciphers  on;

 

   #    location / {

   #        root   html;

   #        index  index.html index.htm;

   #    }

   #}

 

}


nginx