Nginx技术手册

各类web服务器的占有率: http://w3techs.com/technologies/overview/web_server/all

spacer.gifwKiom1XuiD6gLCbSAAFKLOaq8YE362.jpg

Nginx是一个高性能的web和反向代理服务器软件,与Apache相比,Nginx能够支持更多的并发连接(针对静态的,小文件服务器),且占用资源更少,效率很高。

作为负载均衡服务器,Nginx可以作为http server或DB等服务器的代理服务器,类似专业的Haproxy软件功能(Nginx代理功能相对简单,代理功能及效率不如Haproxy)。

邮件代理服务软件;

缓存服务器,相当于专业的缓存软件,如squid

Nginx安装简单,配置文件简洁、配置灵活(支持perl语法)。

如 网易、新浪、赶集、人人网等都在使用Nginx。

Nginx的http服务器特性:

  • 处理静态文件,索引文件及自动索引,打开文件描述符缓存;

  • 使用缓存加速反向代理;简单负载均衡及容错;

  • 远程FastCGI服务的缓存加速支持;简单的负载均衡及容错;

  • 模块化的架构。过滤器包括gzip压缩、ranges支持、chunked相应、xslt,ssi以及圈像缩放,在ssi过滤器中,一个包含多个ssi的页面,如果经由FastCGI或反向代理处理,可被并行处理;

  • 支持SSL,TLS SNI;

  • 基于名字和IP的虚拟主机;

  • Keep-alive和pipelined连接支持;

  • 灵活的配置;

  • 重新加载配置以及在线升级时,不需要中断正在处理的请求;

  • 自定义访问日至格式,带缓存的日志写操作以及快速日志轮转;

  • 3xx-5xx错误代码重定向;

  • 重写(rewrite)模块;

  • 给予客户端IP地址和http基本认证机制的访问控制;

  • 支持PUT、DELETE、MKCOL、COPY、以及MOVE方法;

  • 支持FLV流和MP4流;

  • 速度限制;

  • 来自同一地址的同时连接数或请求数限制;

以上信息来自: http://nginx.org/

Nginx有点总结:

  • 1.高并发:能支持1-2万甚至更多的并发连接(静态小文件环境下);

  • 2.内存消耗少:在3w并发连接下,开启的10个Nginx进程消耗不到200M内存;

  • 3.可以做HTTP反向代理:即负载均衡功能,相当于专业的Haproxy软件或lvs的功能;

  • 4.内置对RS服务健康检查功能:如果Nginx proxy后端某台web机器宕机,不会影响前端的访问,这个功能还是比较弱,徐后续改进;

  • 5.通过cache插件(cache_purge)可以实现类squid等专业的缓存软件实现的功能;

  • 6.Nginx最重要的优点是:支持kqueue(FreeBSD4.1+),epoll(Linux 2.6+)等网络IO事件模型。由此来支持高并发。

Nginx的应用场合:

  • 使用 Nginx 结合FastCGI运行PHP、JSP、Perl等程序;

  • 使用 Nginx 作为反向代理、负载均衡、规则过滤;

  • 使用 Nginx 运行静态 HTML 页、小图片等;

  • 使用 Nginx 加 cache 插件实现对 web 服务器缓存功能;

提示:近几年,网上热炒 Nginx web server,经过实际测试,对于提供纯静态小文件HTML页面、图片等服务,Apache确实也比Nginx逊色点。但在结合PHP引擎提供php服务及其它更多方面,并不比Nginx差,而apahce的稳定性相对要好一些。

Nginx和其他web服务器的对比

主流web服务产品对比说明:

1)Apache

  • 2.2版非常稳定强大,据官方说明,其2.4版本性能超强;

  • Prefork模式取消了进程创建开销,性能很高;

  • 处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在于Apache本身(PHP及数据的并发远远小于Apache的并发,所以处理动态数据时Apache不比Nginx差,相反Apache的稳定性更好一些);

  • 高并发时消耗系统资源相对多一些;

2)Nginx

  • 基于异步IO模型,性能强,能够支持上万并发;

  • 对小文件支持很好,性能很高(限静态小文件);

  • 代码优美,扩展库必须编译进主程序;

  • 消耗系统资源比较低;

3)lighttpd

  • 基于异步IO模型,性能和Nginx相近;

  • 扩展库是so模式,比Nginx更灵活;

  • 全球使用率比以前低,安全性没有上面两个好;

  • 通过插件(mod_secdownload)可实现文件URL地址加密;

spacer.gif

总结:当处理动态数据时,三者的差距不大,从测试结果来看,Apache更有优势点,这是因为处理动态数据的能力取决于 php 和后端数据库的提供服务能力,也就是说瓶颈不在于web服务器上。一般php支持的并发参考值300--1000,java引擎并发300--1000.

Nginx使用最新的epoll(Linux2.6内核)和kqueue(freebsd)网络IO模型,而Apache则使用的是传统的select模型。目前Linux能够承受高并发访问的Squid、Memcached都采用的是epoll网络的I/O模型。

Nginx安装配置

1)主要配置文件介绍

配置文件:../nginx/nginx.conf

主目录:../nginx/html

2)主要命令:

查看版本信息:/usr/sbin/nginx -v

配置文件语法检查:/usr/sbin/nginx -t

启动:/etc/init.d/nginx start

停止: /etc/init.d/nginx stop

修改配置,平滑重启: /etc/init.d/nginx reload

注意:重启也可以使用发信号的方式:

kill  -HUP  `cat  /var/run/nginx.pid`  #向master进程的PID发送信号。

Nginx支持的信号:

TEM,INT:快速关闭

QUIT:正常关闭

HUP:平滑重启reload,重新加载配置文件

USR1:重新打开日志文件,在切割日志时有用

USR2:平滑升级

WINCH:从容关闭工作worker进程(只剩主进程master)

Nginx 的工作模式:1个 master 进程 +N 个 worker 进程

编译安装 Nginx 

1)安装 Nginx 所需的 pcre 库

pcre 全称(Perl Compatible Regular Expressions),中文 perl 兼容正则表达式,官方网址:http://www.pcre.org/,安装pcre 库是为了使Nginx支持 HTTP Rewrite 模块。安装过程如下:

tar xzf pcre-8.36.tar.gz

cd  pcre-8.36

./configure

make; make install 

cd ..

附:pcre介绍

2)安装Nginx

软件下载:wget 

useradd nginx -s /sbin/nologin  -M

tar xzf nginx-1.4.7.tar.gz

cd nginx-1.4.7

./configure --user=nginx --group=nginx --prefix=/usr/local/ nginx-1.4.7 --with-http_ssl_module --with-http_stub_status_module 

编译安装的一些参数的获取:./configure --help


make && make install  或者  make; make install

ln -s /usr/local/nginx-1.4.7 /usr/local/nginx

做软连接的目的是隐藏自己软件的版本号,一方面是安全考虑,另一方面是使用的时候方便,而且升级时,在升级后,把软连接删除,重新做个软连接即可,其他地方不需要动就能使用新版本的软件。



3)启动并检查安装结果

/usr/local/nginx/sbin/nginx -t

如果遇到错误,解决方法见下面的描述

启动服务:

/usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

编译安装的Nginx启动,不用加start

如果是rpm包安装的Nginx,需要按如下方式启动:

/usr/local/nginx/sbin/nginx start

查看端口:

lsof -i :80

ss -lnutp |grep 80

ps -ef |grep nginx

错误解决:

spacer.gif

然后再执行命令:ldconfig

不要还怕错误,要想办解决错误,错误才能使你进步。

Welcome to Nginx !

如果不能出现 welcome to Nginx,请按如下步骤检查:

  • 防火墙是否关闭;

    • /etc/init.d/iptables stop

    • iptables -I INPUT -p tcp --dport 80 -j ACCEPT  ---增加防火墙策略,允许80端口的访问

    • chkconfig iptables off

    • /etc/init.d/iptables status

  • selinux是否关闭

    • setenfore 0

    • vi /etc/selinux/config |grep SELINUX=distabled

  • 查看80端口是否被占用了

    • netstat -lnt |grep 80

  • 查看是否已经有Nginx进程存在了

    • ps -ef |grep nginx

  • 本地进行测试

    • wget http://本机IP地址,看下本机是否可以访问,如果本地可以访问,而浏览器访问不了,说明被防火墙阻止了。

  • 查看Nginx日志,看下是否有特殊异常或报错

    • 要学会看服务的日志,对于解决问题,非常有帮助。

    • less /usr/local/nginx/logs/error.log

  • tips:遇到问题的时候,我们要第一时间看屏幕返回的提示和Nginx服务的错误日志,获取有效的信息和解决问题。这是运维工程师的基本技能!养成看屏幕输出和看错误日志的习惯,这才是正确的发展路线。

部署一个简单的Nginx web站点

Nginx默认站点目录:Nginx安装目录下的html目录(即:/usr/local/nginx/html),这个信息可以在Nginx的配置文件中找到。

spacer.gif

F:\老男孩初级到高级最完整版本\老男孩运维初级\09-LAMP-APACHE-NGINX/L09-10老男孩Linux运维实战培训-Nginx服务生产实战应用指南03..avi

Nginx的目录结构说明:

[root@test nginx]# tree /usr/local/nginx

/usr/local/nginx 
├── client_body_temp 
├── conf  #这是 Nginx 的所有配置文件的目录,及其重要。
│   ├── fastcgi.conf  #fastcgi的配置文件
│   ├── fastcgi.conf.default 
│   ├── fastcgi_params  #fastcgi的参数文件
│   ├── fastcgi_params.default 
│   ├── koi-utf 
│   ├── koi-win 
│   ├── mime.types 
│   ├── mime.types.default 
│   ├── nginx.conf  #Nginx默认的主配置文件
│   ├── nginx.conf.default 
│   ├── scgi_params 
│   ├── scgi_params.default 
│   ├── uwsgi_params 
│   ├── uwsgi_params.default 
│   └── win-utf 
├── fastcgi_temp  #临时目录
├── html  #编译安装时,Nginx的默认站点目录,类似Apache的htdocs目录
│   ├── 50x.html  #错误页面优雅替代显示文件,例如:出现502错误会调用此页面
│   └── index.html  #默认的首页文件,在实际环境中,大家习惯用(注意:不是必须)index.html、index.jsp来作为网站的首页文件。首页文件名字是在nginx.conf中事先定义好的。具体参数为:index index.html index.htm;注意:与Apache参数的不同DirectoryIndex index.html
├── logs  #日志目录,包括访问日志和错误日志
│   ├── access.log  #这是Nginx的默认访问日志文件,使用tail -f access.log来实时观看网站的用户访问情况信息。
│   ├── error.log  #这是Nginx的错误日志文件,如果Nginx出现启动故障等问题,一定要查看这个错误日志。
│   └── nginx.pid  #Nginx的pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp 
├── sbin  #这是Nginx命令的目录,如Nginx的启动命令nginx
│   └── nginx  #
├── scgi_temp  #临时目录
└── uwsgi_temp  #临时目录

9 directories, 21 files 

Nginx主配置文件nginx.conf

nginx.conf是Nginx的最重要的配置文件之一,必须搞定它,下面针对默认主配置文件nginx.conf的参数做详细的中文解释:

[ root@test ~]# cat -n /usr/local/nginx/conf/nginx.conf 
     1 
     2  #user  nobody; 
     3  worker_processes  1; 
     4 
     5  #error_log  logs/error.log; 
     6  #error_log  logs/error.log  notice; 
     7  #error_log  logs/error.log  info; 
     8 
     9  #pid        logs/nginx.pid; 
    10 
    11 
    12  events { 
    13      worker_connections  1024; 
    14  } 
    15 
    16 
    17  http { 
    18      include       mime.types; 
    19      default_type  application/octet-stream; 
    20 
    21      #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
    22      #                  '$status $body_bytes_sent "$http_referer" ' 
    23      #                  '"$http_user_agent" "$http_x_forwarded_for"'; 
    24 
    25      #access_log  logs/access.log  main; 
    26 
    27      sendfile        on; 
    28      #tcp_nopush     on; 
    29 
    30      #keepalive_timeout  0; 
    31      keepalive_timeout  65; 
    32 
    33      #gzip  on; 
    34 
    35      server { 
    36          listen       80; 
    37          server_name  localhost; 
    38 
    39          #charset koi8-r; 
    40 
    41          #access_log  logs/host.access.log  main; 
    42 
    43          location / { 
    44              root   html; 
    45              index  index.html index.htm; 
    46          } 
    47 
    48          #error_page  404              /404.html; 
    49 
    50          # redirect server error pages to the static page /50x.html 
    51          # 
    52          error_page   500 502 503 504  /50x.html; 
    53          location = /50x.html { 
    54              root   html; 
    55          } 
    56 
    57          # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
    58          # 
    59          #location ~ \.php$ { 
    60          #    proxy_pass    http://127.0.0.1;
    61          #} 
    62 
    63          # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    64          # 
    65          #location ~ \.php$ { 
    66          #    root           html; 
    67          #    fastcgi_pass   127.0.0.1:9000; 
    68          #    fastcgi_index  index.php; 
    69          #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 
    70          #    include        fastcgi_params; 
    71          #} 
    72 
    73          # deny access to .htaccess files, if Apache's document root 
    74          # concurs with nginx's one 
    75          # 
    76          #location ~ /\.ht { 
    77          #    deny  all; 
    78          #} 
    79      } 
    80 
    81 
    82      # another virtual host using mix of IP-, name-, and port-based configuration 
    83      # 
    84      #server { 
    85      #    listen       8000; 
    86      #    listen       somename:8080; 
    87      #    server_name  somename  alias  another.alias; 
    88 
    89      #    location / { 
    90      #        root   html; 
    91      #        index  index.html index.htm; 
    92      #    } 
    93      #} 
    94 
    95 
    96      # HTTPS server 
    97      # 
    98      #server { 
    99      #    listen       443 ssl; 
   100      #    server_name  localhost; 
   101 
   102      #    ssl_certificate      cert.pem; 
   103      #    ssl_certificate_key  cert.key; 
   104 
   105      #    ssl_session_cache    shared:SSL:1m; 
   106      #    ssl_session_timeout  5m; 
   107 
   108      #    ssl_ciphers  HIGH:!aNULL:!MD5; 
   109      #    ssl_prefer_server_ciphers  on; 
   110 
   111      #    location / { 
   112      #        root   html; 
   113      #        index  index.html index.htm; 
   114      #    } 
   115      #} 
   116 
   117  }

去掉注释和空格后:

[ root@test conf]# egrep -v "#|^$" nginx.conf 
worker_processes  1; #工作进程
events { 
    worker_connections  1024;  #事件

http {   #http的标签
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { #虚拟主机的配置
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

server标签相当于Apache中的一个虚拟主机vhost;

所有的server标签都要放在http的标签的里面;

Nginx虚拟主机配置实战:

1)基于域名的虚拟主机

生产环境中最常用到的。必须熟练掌握

  • 在主配置文件的第一行增加Nginx运行用户:user nginx nginx

  • 调整启动进程,根据cpu的数量调节(进程数可以是CPU的数量乘2):worker_processes 8 ;

  • 在events标签里面第一行增加:use epoll

  • 修改server标签

    • 修改server_name 为:www.etiantian.org etiantian.org

  • 修改配置文件过程中,要注意大括号的对应关系,一定要成对出现。低级错误。

  • nginx.conf中的配置,都要以分号结束。

user nginx nginx; 
worker_processes  2; 
events { 
    use epoll; 
    worker_connections  1024; 

http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen       80; 
        server_name   www.etiantian.org etiantian.org; 
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
    } 
}

创建站点目录:

mkdir /data/www/{www,bbs,blog} -p

授权:chown -R nginx.nginx  /data/www

创建日志文件目录:

mkdir /app/log -p

授权:chown -R nginx.nginx /app/log

修改nginx.conf中的默认站点目录:

root   /data/www/www;

echo www > /data/www/www/index.html

检查语法

/usr/local/nginx/sbin/nginx -t

平滑重启Nginx

/usr/local/nginx/sbin/nginx -s reload

Windows本机解析配置:

开始 -- 运行-- %systemroot%\system32\drivers\etc\hosts 

完整的虚拟主机配置如下:

[ root@test conf]# cat -n nginx.conf 
     1  user nginx nginx; 
     2  worker_processes  4; 
     3  error_log  logs/error.log crit; 
     4  pid        logs/nginx.pid; 
     5 
     6  events { 
     7      use epoll; 
     8      worker_connections  1024; 
     9  } 
    10  http { 
    11      include       mime.types; 
    12      default_type  application/octet-stream; 
    13      log_format  commonlog '$remote_addr - $remote_user [$time_local] "$request" ' 
    14                            '$status $body_bytes_sent "$http_referer" ' 
    15                            '"$http_user_agent" "$http_x_forwarded_for"'; 
    16      sendfile        on; 
    17      keepalive_timeout  65; 
    18      server { 
    19          listen       80; 
    20          server_name  www.etiantian.org etiantian.org; 
    21          location / { 
    22              root   /data/www/www; 
    23              index  index.html index.htm; 
    24              access_log /app/log/www_access.log commonlog; 
    25          } 
    26      } 
    27  ############ 
    28      server { 
    29          listen       80; 
    30          server_name  bbs.etiantian.org; 
    31          location / { 
    32              root   /data/www/bbs; 
    33              index  index.html index.htm; 
    34              access_log /app/log/bbs_access.log commonlog; 
    35          } 
    36      } 
    37  ############     
    38      server { 
    39          listen       80; 
    40          server_name  blog.etiantian.org; 
    41          location / { 
    42              root   /data/www/blog; 
    43              index  index.html index.htm; 
    44              access_log /app/log/blog_access.log commonlog; 
    45          } 
    46      } 
    47  }

Nginx配置文件的目录优化

如果虚拟主机比较多的时候,把所有虚拟主机都放一个配置文件里面,就不太好查看和管理了。可以模拟Apache的虚拟目录的方式,包含虚拟目录的配置文件。

首先创建虚拟目录配置文件存放目录:

mkdir /usr/local/nginx/extra

修改后的配置文件包括两个文件,分别如下:

主配置文件:

[ root@test ~]# cat -n /usr/local/nginx/conf/nginx.conf 
     1  user nginx nginx; 
     2  worker_processes  4; 
     3  error_log  logs/error.log crit; 
     4  pid        logs/nginx.pid; 
     5 
     6  events { 
     7      use epoll; 
     8      worker_connections  1024; 
     9  } 
    10  http { 
    11      include       mime.types; 
    12      default_type  application/octet-stream; 
    13      log_format  commonlog '$remote_addr - $remote_user [$time_local] "$request" ' 
    14                            '$status $body_bytes_sent "$http_referer" ' 
    15                            '"$http_user_agent" "$http_x_forwarded_for"'; 
    16      sendfile        on; 
    17      keepalive_timeout  65; 
    18      include ../extra/nginx_vhosts.conf; 
    19  }

虚拟主机配置文件:

[ root@test ~]# cat -n /usr/local/nginx/extra/nginx_vhosts.conf  
     1  server { 
     2          listen       80; 
     3          server_name  www.etiantian.org etiantian.org; 
     4          location / { 
     5              root   /data/www/www; 
     6              index  index.html index.htm; 
     7              access_log /app/log/www_access.log commonlog; 
     8          } 
     9      } 
    10  ############ 
    11  server { 
    12          listen       80; 
    13          server_name  bbs.etiantian.org; 
    14          location / { 
    15              root   /data/www/bbs; 
    16              index  index.html index.htm; 
    17              access_log /app/log/bbs_access.log commonlog; 
    18          } 
    19      } 
    20  ############     
    21  server { 
    22          listen       80; 
    23          server_name  blog.etiantian.org; 
    24          location / { 
    25              root   /data/www/blog; 
    26              index  index.html index.htm; 
    27              access_log /app/log/blog_access.log commonlog; 
    28          } 
    29      }

甚至我们还可以将每个虚拟主机定义一个vhost配置文件,这样简单清晰,可以分别定义,方便维护和管理;

包含的时候,只需要修改主配置文件中的: include ../extra/nginx_vhosts.conf; 为:include ../extra/*.conf; 

也可以分别写一行;

配置文件优化:

nginx_vhosts.conf配置文件拆分:

sed -n '1,9p' nginx_vhosts.conf > www.etiantian.org.conf

sed -n '10,19p' nginx_vhosts.conf > bbs.etiantian.org.conf

sed -n '20,29p' nginx_vhosts.conf > blog.etiantian.org.conf

编辑主配置文件,将include ../extra/nginx_vhosts.conf;替换为:

include ../extra/www.etiantian.org.conf;

include ../extra/bbs.etiantian.org.conf;

include ../extra/blog.etiantian.org.conf;

配置Nginx状态信息虚拟主机:

cat  >>/usr/local/nginx/conf/extra/nginx_vhosts.conf <<EOF  #将下面这个server追加到Nginx的虚拟主机配置文件中。

######

server

{

listen 80;

server_name status.etiantian.org;

location / {

stub_status on;

access_log off;

}

}

EOF

2)基于端口的虚拟主机配置

只需修改配置文件: nginx_vhosts.conf 中的每个虚拟主机中的端口即可,即,将默认的80端口改成别的端口,如8060、8070、8080等;

然后重新加载配置文件。

3)基于IP地址的虚拟主机配置

此种比较少用,了解下即可

如果要测试此类虚拟主机,需要在测试机上增加几个IP地址(在负载均衡配置里,此IP也被称为VIP):

ifconfig eth0:192.168.64.101 netmask 255.255.255.0 up

ifconfig eth0:192.168.64.102 netmask 255.255.255.0 up

ifconfig eth0:192.168.64.103 netmask 255.255.255.0 up

修改配置文件: nginx_vhosts.conf 

把server_name 改成这几个IP地址,将每个端口前面加上对应的IP地址;

实例:

[root@test ~]# cat -n /usr/local/nginx/extra/nginx_vhosts.conf 
     1  server {
     2          listen       192.168.64.101:8060;
     3          server_name  192.168.64.101;
     4          location / {
     5              root   /data/www/www;
     6              index  index.html index.htm;
     7              access_log /app/log/www_access.log commonlog;
     8          }
     9      }

批量替换:将80替换为:IP加端口

:g/80/s//192.168.64.101:80/g

后面两个与之类似

修改完成后,检查配置文件语法,重新加载配置文件,进行测试;

检查语法 : /usr/local/nginx/sbin/nginx -t 

平滑重启Nginx : /usr/local/nginx/sbin/nginx -s reload

Nginx虚拟主机配置别名:

[root@test ~]# cat -n /usr/local/nginx/extra/nginx_vhosts.conf

     1  server {

     2          listen       80;

     3          server_name  www.etiantian.org etiantian.org;

     4          location / {

     5              root   /data/www/www;

     6              index  index.html index.htm;

     7              access_log /app/log/www_access.log commonlog;

     8          }

     9      }

说明:别名,就写在域名后面就行了,以空格分开即可;

应用场景:

1)如输入baidu.com会自动跳转到www.baidu.com,输入taobao.com会自动跳转到www.taobao.com,这里我们就是要实现输入etiantian.org和访问www.etiantian.org一样显示我们的网站。

2)在生产环境中,利用别名来监控集群环境下面的RS的URL是否正常。

如:ServerAlias etiantian.org 21www.etiantian.org 22www.etiantian.org

可以在监控服务里面配置hosts来监控RS  21www.etiantian.org 22www.etiantian.org等地址是否正常,进而判断每台机器的www.etiantian.org是否正常。

如不使用别名,则很难通过URL方式检测判断下面的机器是否正常(因为域名是同一个)。

当然,Keepalived和Haproxy等软件也有对于RS使用URL的健康检查措施,这方面的案例见相关文档。

配置多个Nginx实例

Nginx安装后的启动命令在“/usr/local/nginx/sbin/nginx”,我们可以通过 -h 参数查看相关参数的用法:

[ root@test ~]# /usr/local/nginx/sbin/nginx -h 
nginx version: nginx/1.8.0 
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives] 

Options: 
  -?,-h         : this help 
  -v            : show version and exit  #显示Nginx版本号后退出
   -V            : show version and configure options then exit   #显示Nginx版本号和配置选项(配置选项即:编译安装Nginx的时候所用的参数)后退出
   -t            : test configuration and exit  #测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否存在语法错误。
  -q            : suppress non-error messages during configuration testing 
   -s signal     : send signal to a master process: stop, quit, reopen, reload  #发送信号给一个master进程,这里的reload参数很重要,是优雅重启Nginx的参数,类似Apache的graceful参数。
  -p prefix     : set prefix path (default: /usr/local/nginx-1.8.0/) 
   -c filename   : set configuration file (default: conf/nginx.conf) #使用制定的Nginx配置文件,而不是conf目录下的nginx.conf。借此可以启动多个Nginx实例。
  -g directives : set global directives out of configuration file

[ root@test ~]# /usr/local/nginx/sbin/nginx -V 
nginx version: nginx/1.8.0 
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)  
built with OpenSSL 1.0.1e-fips 11 Feb 2013 
TLS SNI support enabled 
configure arguments: --prefix=/usr/local/nginx-1.8.0 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

  • /usr/local/nginx/sbin/nginx

  • /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf  #此处的nginx.conf和之前默认的nginx.conf不能冲突,否则起不来的,这样可以单独开启nginx实例。

cp -af: 

杀掉nginx:pkill nginx

启动多实例:

  • /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf

  • /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

应用场景:

服务器资源有限,且单个服务器的性能又很空余,又希望各http相对独立,此时就可以采用nginx多实例的方式;


你可能感兴趣的:(nginx)