初识Nginx 安装使用笔记(一)

     虽然Apache是整个www服务中中坚力量,但是他也不是万能的,他也有他的不足。那就是他的 “抗压”能力相比之下有些不足,当面临数万的访问量的时候,Apacheserver 能做的只有“吃cpu,耗内存”, 而俄罗斯开发的Nginx也是一款不错的HTTPServer的服务软件。市场的占有率也不容忽视。

最新数据可以看出,Apache状态不佳,而微软和Nginx略有上升的趋势

wps_clip_image-12991

wps_clip_image-26247

数据来自http://news.netcraft.com

作为一个技术人员,特别是互联网方面,给自己注入“新鲜的血液”已经是我们的准则之一。

来说说 Apache和Nginx的区别吧 ,也便于我们的学习。

① 首先Apache是支持并发连接的,运行httpd这个服务后,就会产生很多的子进程/线程来响应不同的客户端请求。Apache两种工作模式:是prefork模式与worker模式

prefork每个子进程只有一个线程,效率高但消耗内存大,是linux下默认的模式;worker模式每个子进程有多个线程,内存消耗低,但一个线程崩溃会牵连其它同子进程的线程。

② 另外Apache支持静态网页和动态网页,比如他的PHP就是靠自己所支持的模块来实现的mod_php5 又被称为apxs2。

③ 因此Apache是基于多进程的这样一个HTTPServer,也正是他这样的特点,注定了Apache在接受大的并发量的时候,无意会占用大量的cpu和内存资源,而这些并不是我们愿意看的。

而Nginx并不是基于进程的HTTPServer,是一种异步服务器,“异步”一词我也没有很深的了解,只知道他能利用极少的硬件资源去响应大量的客户请求,达到以一当百的效果。比如,对于10,000的并发连接请求,nginx可能仅仅使用几M的内存;而Apache可能需要使用几百M的内存资源。

nginx和Apache类似都通过各种模块可以对服务器的功能进行丰富的扩展,同样都是通过conf配置文件对各种选项进行配置。但是,Nginx虽好,对于PHP等动态网页,nginx没有内置的模块来对PHP进行支持,而是通过FastCGI来支持的。(以上内容参考教学资料)

下面我们就来搭建Nginx

安装Nginx和安装Apache的区别并不是很大,这里我分为三个步骤

1.获取软件包:  其安装文件可以从官方网站http://www.nginx.org下载,并且Nginx的windows版本有,很方便。

2.安装Nginx所需要的依赖包,以及运行的账户和组。

3.编译安装,并优化路径

Yum安装所需要的安装包

yum  -y  install  pcre-devel  zlib-devel

创建用户和组  不指定宿主目录 不允许登陆系统

wps_clip_image-2373

编译安装

wps_clip_image-26747

--with-http_stub_start_module: 指定启用http_stub_start_module这个模块来支持状态统计

更多的参数可以用 ./configure  --help 查看

make && make install 来编译安装

安装完成后 优化路径

wps_clip_image-12149

使用nginx -t 命令查看配置文件是否有错误

wps_clip_image-15337

Nginx安装完毕

使用命令 nginx启动服务 使用kill 或者 killall 关闭服务

wps_clip_image-1238

使用kill ,nginx 命令管理服务不是很方便,也不服务linux的风格,所以在这我就手动编写nginx的系统服务脚本,并且添加到系统服务中

脚本如下:

―――――――――――――――――――――――――――――――――――――――

#!/bin/bash

# chkconfig: - 60 50

# processname: nginx

# config: /usr/local/nginx/conf/nginx.conf

nginx_path="/usr/local/nginx"

nginx_pid="/usr/local/nginx/nginx.pid"

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

[ -x $nginx_path/sbin/nginx ] || exit 0

RETVAL=0

prog="nginx"

start() {

# Start daemons.

if [ -e $nginx_pid -a ! -z $nginx_pid ];then

echo "nginx already running...."

exit 1

fi

if [ -e /usr/local/nginx/conf/nginx.conf ];then

  echo -n $"Starting $prog: "

  $nginx_path/sbin/nginx -c /usr/local/nginx/conf/nginx.conf &

  RETVAL=$?

[ $RETVAL -eq 0 ] && {

touch /var/lock/subsys/$prog

success $"$prog"

}

echo

else

RETVAL=1

fi

return $RETVAL

}

# Stop daemons.

stop() {

        echo -n $"Stopping $prog: "

        killproc -d 10 $nigx_path/sbin/nginx

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog

}

# See how we were called.

case "$1" in

start)

        start

        ;;

stop)

        stop

        ;;

restart)

        stop

        start

        ;;

status)

        status $prog

        RETVAL=$?

        ;;

*)

        echo $"Usage: $0 {start|stop|restart|status}"

        exit 1

esac

exit $RETVAL

―――――――――――――――――――――――――――――――――――――――

这个脚本只能做到部分的功能,没有完善。

给予权限并添加到系统服务

wps_clip_image-26591

验证脚本

wps_clip_image-11075

启动后能够访问Nginx的主页面 应注意防火墙的配置

wps_clip_image-27085

Nginx的主配置文件 nginx.conf

Nginx的主配置文件主要有三部分组成

――全局配置

――I/O事件配置

――HTTP配置

文件中 # 号表示注释内容  ; 表示结束。

1)全局配置

由各种配置语句组成,不使用特定的界定标记。全局配置部分包括运行用户、工作进程数、错误日志、PID存放位置等基本设置。

常用配置项:

user  nobody;    

//运行用户,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody

worker_processes 2;

//指定nginx启动的工作进程数量,建议按照cpu数目来指定,一般为它的倍数

worker_cpu_affinity 00000001 00000010; 

//为每个进程分配cpu,上例中将2个进程分配到两个cpu,当然可以写多个,或者将一个

进程分配到多个cpu

worker_rlimit_nofile 102400; 

//这个指令是指当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit

-n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值

保持一致。(通过”ulimit �Cn 数值”可以修改打开的最多文件数目)

error_log  logs/error.log; //全局错误日志文件的位置

pid  logs/nginx.pid;  //PID文件的位置

2)I/O事件配置:

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

events {

   use epool;   //使用epool模型,对于2.6以上的内核,建议使用epool模型以提高性能

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

}

3)HTTP配置

使用”http{}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以

及虚拟主机、PHP解析等一系列设置。其中大部分配置语句包含在子界定标记”servier {}”内。

http {   #设定mime类型,即conf/目录下的mime.types文件中的设定。   include      mime.types;   default_type application/octet-stream;   #设定日志格式   log_format main        '$remote_addr - $remote_user [$time_local]'   '"$request" $status $bytes_sent '   '"$http_referer" "$http_user_agent" '   '"$gzip_ratio"';   log_format download '$remote_addr - $remote_user [$time_local] '   '"$request" $status $bytes_sent '   '"$http_referer" "$http_user_agent" '   '"$http_range" "$sent_http_content_range"';   #设定access log   access_log logs/access.log main;   sendfile  on;   //支持文件发送(下载)   keepalive_timeout 65;  //连接保持超时   #设定虚拟主机   server {                //用来配置虚拟主机      listen  80; //WEB服务的监听设置,可以采用”IP地址:端口”形式      server_name www.lnmp.com;//网站名,称可以写多个名称,用空格分隔

       location / {    //表示如何匹配后面的路径的

index index.html; //默认首页

root html; //网页根目录位置,默认为Nginx安装目录下的html/子目录,root语句用来设置特定访问位置的网页文档路径,根据需要可改为/var/www/html等其他路径。

}      charset gb2312;  //网页的默认字符集      #设定本虚拟主机的访问日志      access_log logs/www.lnmp.com.access.log main;

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

location = /50x.html {

root html;

}  }}

Nginx的location 配置:

基本语法: location [=|~|~*|^~] /uri/ { … }

= 表示做精确匹配~ :为区分大小写匹配~*: 为不区分大小写匹配!~ :和 !~* 分别为区分大小写不匹配及不区分大小写不匹配

正则表达式匹配,其中:文件及目录匹配,其中:-f 和 !-f 用来判断是否存在文件-d 和 !-d 用来判断是否存在目录-e 和 !-e 用来判断是否存在文件或目录-x 和 !-x 用来判断文件是否可执行

示例1:

location = / {# 只匹配 / 查询。}

location  / {

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

}

示例2:

location ^~ /images/ {# 匹配任何以 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。}

示例3:

location ~* \.(gif|jpg|jpeg)$ {# 匹配任何以 gif、jpg 或 jpeg 结尾的请求。}

Nginx的状态统计:

Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的WEB访问情况。配置

编译参数时可添加―with-http_stub_stastus_module来启用此模块。要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf文件,指定访问位置并打开stub_status配置。在http{}配置的server{}子配置内添加如下配置项

wps_clip_image-27003

注:location  /status  //匹配任何包含/tongji的任何查询

stub_status  on  //打开状态统计功能

Access_log  off //关闭此位置的日志记录

Nginx 支持为目录添加密码认证,使用apache 的 htpasswd 来创建密码文件

wps_clip_image-30782

htpasswd  -c /.htpass 用户名

wps_clip_image-9091

保存修改过的nginx.conf文件并重启nginx服务使修生效。

新的配置生效后,在浏览器中访问Nginx服务器的/tongji网站位置(http://web服务器

IP/status)可以看到状态统计信息

验证

wps_clip_image-22585

wps_clip_image-7922

active connections ― 发起的活动连接数 1个

server accepts handled requests ― nginx 总共处理了 4个连接, 成功创建4次握手 (证明中间没有失败的), 总共处理了 6 个请求

Nginx的访问控制:

wps_clip_image-17130

allow 允许规则,deny拒绝规则;

规则的执行是按从上向下执行,匹配某条规则后将不再检查其他规则。

拒绝后显示 被禁止

wps_clip_image-14988

Nginx的虚拟主机配置:

虚拟主机的概念不用过多的解释,Apache部分已经做过介绍。就直接做配置了。

使用Nginx搭建虚拟主机服务器时,每个虚拟WEB站点拥有独立的”server {}”配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。

现在我就创建两个虚拟主机 www.51cto.com 和 www.nginx.org

先创建网页文档目录和引导文件

wps_clip_image-1338

然后修改nginx.conf文件 天骄 server{} 字段 并在其中指定网站名称 监听地址等信息

wps_clip_image-15329

注意全局配置中的log设置

wps_clip_image-4481

重启服务   注意dns的配置

最终结果

51

wps_clip_image-10963

Nginx

wps_clip_image-15227

其他两种方式 照葫芦画瓢 参考Apache的配置。

End

你可能感兴趣的:(微软,target,blank,访问量,俄罗斯)