再不会nginx你就out了

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强。

再不会nginx你就out了
再不会nginx你就out了

Nginx主要以事件驱动方式编写。源码可参考Github    官方网站。Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

Nginx作为HTTP服务器主要有以下几个特性:

  • 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
  • 无缓存的反向代理加速,简单的负载均衡和容错。
  • FastCGI,简单的负载均衡和容错。
  • 模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
  • 支持 SSL 和 TLSSNI。

下面我们来简单介绍一下Nginx的安装与配置。

Nginx安装

从官网下载最新版本的Nginx并进行解压,进入解压目录进项相关安装即可:

$ tar –xvf  nginx-1.8.1.tar
$ cd  nginx-1.8.1
$ sudo  ./configure

$ sudo  make
$sudo  make install

安装成功后使用nginx -v验证是否安装完成

$ nginx -v

若安装成功,开启Nginx服务,并打开浏览器地址 http://127.0.0.1

sudo ./nginx //开启nginx服务
再不会nginx你就out了
再不会nginx你就out了

 

 

上图说明,Nginx环境已经安装并运行正常,接下来需要对nginx.conf进行几项重要的配置了。

Nginx配置

一般情况下,我们只需要对conf下的nginx.conf文件进行基本配置即可。

修改的nginx.conf配置文件

#user  nobody;
worker_processes  auto; #根据设备cpu的个数 自动选择
 
#error_log  /nginx/nginx-1.8.1/logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
events {
    worker_connections  1024; #允许请求的连接数
}
 
 
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"';
 
    #access_log logs/access.log  main;
 
    sendfile        on; #允许发送文件
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65; #会话超时时间
 
    #gzip on;
 
    server {
        listen       80; #监听的端口
        server_name  localhost; #服务端域名或ip
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / { #Web服务的根目录
            root        /project/cwteam/cwteam/cwteam;
            index  index.html index.htm index.php;# 加入了html和php
            #如果文件不存在则尝试TP解析 
            try_files  $uri /index.php$uri;
        }
 
        error_page  404              /404.html;
 
        # redirect server error pages to thestatic page /50x.html
        #
        error_page   500 502 503 504  /50x.html; #可自定义错误页面
        location = /50x.html {
            root   html;
        }
 
        # proxy the PHP scripts to Apachelistening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #   proxy_pass   http://127.0.0.1;
        #}
 
        # pass the PHP scripts to FastCGIserver listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #   root          /project/cwteam/cwteam/cwteam;
        #   fastcgi_pass   127.0.0.1:9000;
        #   fastcgi_index  index.php;
        #   fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        #   include        fastcgi_params;
        #}
        location ~ \.php {  #默认nginx不支持php拓展 这里把它添加上
            root        /project/cwteam/cwteam/cwteam; 
            fastcgi_pass   127.0.0.1:9000; 
            fastcgi_index  index.php; 
            fastcgi_intercept_errors on;
            #设置PATH_INFO,注意fastcgi_split_path_info已经自动改写了fastcgi_script_name变量, 
            #后面不需要再改写SCRIPT_FILENAME,SCRIPT_NAME环境变量,所以必须在加载fastcgi.conf之前设置 
            fastcgi_split_path_info  ^(.+\.php)(/.*)$; 
            fastcgi_param  PATH_INFO $fastcgi_path_info; 
             
            #加载Nginx默认"服务器环境变量"配置 
            include        fastcgi.conf; 
        } 
 
 
        # deny access to .htaccess files, ifApache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #   deny  all;
        #}
    }
 
 
    # another virtual host using mix of IP-,name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #   listen       somename:8080;
    #   server_name  somename  alias another.alias;
 
    #   location / {
    #       root   html;
    #       index  index.html index.htm;
    #   }
    #}
 
 
    # HTTPS server
    #
    #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;
    #   }
    #}
 
}