欢迎来到nginx

nginx是什么?

过去说到Web服务器大家都会想到Apache,但近年来Nginx迅速增长。这一次作为入门,我们将解释简单的安装、配置和构建等内容。

C10K难题


Nginx是由俄罗斯开发者Igor Sysoev为了解决C10K问题而开发的。C10K问题指的是在一万个客户端的情况下,即使硬件性能没有问题,但当客户端数量太多时,服务器会崩溃的问题。

特点


作为其特点,它具有轻量、高速的特性,并且作为Web服务器还具备以下功能:
– 反向代理
– 负载均衡
– URL重写
– WebDAV(用于Web文件共享)等。

安装

# yum -y install nginx
# apt-get install nginx

启动、重新加载、结束命令


启动:sudo nginx
停止:sudo nginx -s stop
重新加载配置:nginx -s reload
启动检查:nginx -t

配置文件


user nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    access_log  /var/log/nginx/access.log;
    keepalive_timeout  65;

    location /images/{
       images/に適用したい設定
    }
    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

worker_processes,这个指令控制着运行nginx的worker进程的数量。通常设置为不超过CPU核心数。
error_log,这个指令用于指定错误日志的输出文件名和日志级别。
pid,这个指令用于设置保存master进程的进程ID的文件。
worker_connections,这个指令用于设置一个worker进程能够同时处理的最大连接数。默认设置为512。
mime.types,这个指令会include /etc/nginx/mime.types文件。

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/x-javascript              js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;
  ・・・・
}

指定access_log的内容为访问日志。
设置keepalive_timeout为服务器端的keepalive超时时间, 默认值为75秒。
设置gzip以压缩响应内容。
设置gzip_disable以忽略gzip压缩的范围。

用途可以是什么?


n1.jpg
     upstream  xxx.domain.com  {
            #domino server1 information  in cluster
              server   9.123.159.49:80;      
            #domino server2 information  in cluster                    
              server   9.123.159.153:80;
      }

2) 提供静态内容的传递(例如:内容传递网络)。

# コンテンツをgzip圧縮する、効率アップ
gzip on;

通过压缩,不仅可以减轻网络负载,还可以减少传输量,从而缩短传输时间(即信息到达客户端的时间)。

3) nginx的扩展功能
nginx具有很大的可扩展性,经常与其他lib协同使用。
下面给出与几个Lua的协同示例。
※ Lua是一种具有高度可移植性和快速执行速度等特点的脚本语言。

location / {
    rewrite_by_lua '
    local res = ngx.location.capture("/check-spam")
    if res.body == "spam" then
        -- 利用規約ページへ
        ngx.redirect("/terms-of-use.html")
    end
    ';
    fastcgi_pass ...;
}
location @client{
    proxy_pass  http://www.domain.com;
}

location ~  /test {
    default_type  text/html;
    content_by_lua 'ngx.say("this is domain.com!")';
    access_by_lua '
        -- check the client IP address is in our black list
        if ngx.var.remote_addr == "10.0.0.100" then
            ngx.exit(ngx.HTTP_FORBIDDEN)
        end
        if ngx.var.remote_addr == "10.0.0.112" then
            ngx.exec("@client")
        end
        ';
}

nginx不适用


由于CPU资源消耗过大,其他执行的任务无法进行,因此处理能力一下子就会下降。

常见的建筑


前端使用nginx,后端使用Apache (nginx)。

广告
将在 10 秒后关闭
bannerAds