Linux运维 第三阶段 (八) nginx

Linux运维 第三阶段 (八) nginx

1#useradd  -M -s  /sbin/nologin  nginx       nginx默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制其访问,增加灵活性,降低安全风险

#tar zxvf  nginx-1.0.8.tar.gz  -C /usr/src

#cd  /usr/src/nginx-1.0.8

#./configure  --prefix=/usr/local/nginx  --user=nginx --group=nginx --with-http_stub_status_module                               (启用状态统计模块

#make &&  make  install

#ln -s /usr/local/nginx/sbin/nginx /usr/localsbin   (为使nginx主程序运行更加方便,创建链接文件,即可直接用nginx执行

#nginx -t        (对配置文件/usr/local/nginx/conf/nginx.conf进行检查,找出不当或错误的配置,另可用-c指定其它位置的配置文件

#nginx                      (使用默认配置文件开启nginx

#nginx -c  配置文件   (改用其它的配置文件开启nginx

#killall -9  nginx                                             (停止nginx

#kill -9  $(cat  /usr/local/nginx/logs/nginx.pid(停止nginx

2、配置文件:/usr/local/nginx/conf/nginx.conf包括:全局配置、I/O事件配置、http配置三大块,配置语句的格式:“关键字值;”末尾以分号表示结束。

》全局配置:无特定界定标记,包括运行用户、工作进程数、错误日志、PID存放位置

#user nobody;              (运行用户默认为nobody

worker_process  2;        (指定nginx启动的工作进程数量,按cpu数目来指定,一般为它的倍数

worker_cpu_affinity  00000001 00000010    (为每个进程分配cpu,此例是将2个进程分配到2个cpu,可写多个或将一个进程分配到多个cpu

worker_rlimit_nofile  1024        (一个nginx进程打开的最多文件数目,理论值应是最多打开文件数(#ulimit  -n)与nginx进程数相除,但nginx分配请求并不是那么均匀,所以最好与(ulimit  -n)值保持一致

error_log logs/error_log;     (全局错误日志文件位置

pid logs/nginx.pid

I/O事件配置:使用events{  }界定标记,用来指定nginx进程的I/O响应模型,每个进程的连接数等设定

events {

         use  epoolj;    (使用epool模型,2.6以上内核使用此模型以提高性能

         worker_connections  4096;  (每个进程允许的最多连接数,默认1024,此项根据实际需要定,一般在10000以下,理论上每台nginx服务器最大连接数为worker_process*worker_connections,具体还看硬件及带宽等

}

HTTP配置:使用http{  }界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、虚拟主机、php解析等

http {

         include  mime.types;            (设定mime类型/usr/local/nginx/conf/mime.types

         default_type  application/octet-stream;

         #log_format  main……         (设定日志格式

         #access_log  logs/access.log  main;   (访问日志位置

         sendfile  on;                         (支持文件下载

         #tcp_nopush  on;

         #keepalive_timeout  65;        (链接保持超时

         #gzip  on;      

         server  {                                          web服务的监听配置-虚拟主机

                   listen  80;

                   server_name  localhost;        FQDN,多个用空格分开,网站名称

                   #charset  koi8-r;                   (网页的默认字符集,有gb2312,utf-8

                   #access_log  logs/host.access.log  main;

                   location  /  {

                            root  html;      (网页根目录位置/usr/local/nginx/html/,可修改/var/www/html

                            index  index.html index.htm;      (默认首页

                   }

                   #error_page  404  /404.html;

                   ……

                   error_page  500 502  503  504 150x.html;                   (内部错误的反馈页面

                   location  = /50x.html  {

                            root  html;

                   }

         }

}

》状态统计:在server区域内

         location  /tongji {

                   stub_status  on;    (内置模块http_stub_status_module反馈当前的WEB访问情况

                   access_log  off;     

                   auth_basic  "nginx status";        (登录提示

                   auth_basic_user_file  /usr/local/nginx/.htpasswd;

                   allow  192.168.0.12;

                   deny  192.168.0.0/24;                acl客户端地址访问控制

         }

注:nginx支持为目录添加密码认证,使用apachehtpasswd来创建密码文件

#htpasswd -c /usr/local/nginx/.htpasswd zhangsan

#nginx -t

#service nginx  restart

在浏览器端http://IP/tongji  结果如下:

Active connections                         (当前的活动连接数

Server accepts handled request      (已处理的请求数

Reading:?  Writing:?  waiting:?        (已处理的连接数;成功的TCP握手次数;已处理的请求数

》虚拟主机:每个虚拟WEB站点拥有独立的server{ }段,各自监听的IP,端口号可以单独指定,网络名称要不同

#mkdir -p  /var/www/{benet,accp}

#echo "www.benet.com" >> /var/www/benet/index.html

#echo "www.accp.com" >>  var/www/accp/index.html

#vi /usr/local/nginx/conf/nginx.conf

打开log_format  main……

server {

         listen  80;

         server_name  www.benet.com benet.com;

         charset  utf-8;

         access_log  logs/benet.access.log  main;

         location  {

                   root  /var/www/benet;

                   index  index.html index.php;

         }

}

server {

         listen  80;

         server_name  www.accp.com accp.com;

         charset  utf-8;

         access_log  logs/accp.access.log  main;

         location  {

                   root  /var/www/accp;

                   index  index.html index.php;

         }

}

nginxlocation

基本语法:location =|~|~*|!~|!~*|^~  /usi/{……}

=       表示精确匹配

~       区分大小写匹配

~*     不区分大小写匹配

!~     区分大小写不匹配

!~*   不区分大小写不匹配

^~     正则表达式匹配

文件及目录匹配:

-f!-f      用来判断是否存在文件

-d!-d    用来判断是否存在目录

-e!-e    是否存在文件或目录

-x!-x     文件是否可执行

例: location = / {

         只匹配/查询

}

例:location / {

         匹配任何查询,因为所有请求都已/开头,但是正则表达式和长的块规则将被优先查询匹配

}

例:location ^~ /images/  {

         匹配任何以/images/开头的任何查询并且停止搜索,任何正则表达式将不会被测试

}

例:location  ^*  \.(gif\jpg\jpeg)$ {

         匹配任何以gifjpgjpeg结尾的请求

}

        


本文出自 “Linux运维重难点学习笔记” 博客,请务必保留此出处http://jowin.blog.51cto.com/10090021/1661675

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。