一、Nginx介绍

  火了半边天的Nginx和Apache一样也是Web服务器,专为性能优化而开发,也可以像Squid一样做反向代理,或者邮件代理等许多用途,并有windows的移植版,其最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单台物理服务器可支持30000~50000个并发请求,apache理论上只支持3000~5000个并发请求,但是apache对动态网站的支持要比Nginx好。正因为如此,大量提供社交网站,新闻资讯,电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务。

二、Nginx VS Apache

Nginx优点
  (1)轻量级,同样一架web服务,比apache占用更少的内存及资源
  (2)高并发,nginx处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
  (3)高低模块化的设计,编写模块相对简单
  (4)可作为负载均衡服务器,支持7层负载均衡
  (5)静态处理性能比Apache高3倍以上,但动态处理不足,需要通过后端服务器支持,如Apache

三、Nginx的安装

 #1、安装依赖包 pcre-devel (为了支持网页重写机制)和 zlib-devel(一般系统自带)和 pcre(一般系统自带)和 openssl-devel 和 openssl(一般自带)
yum -y install pcre-devel openssl-devel
#2、创建运行用户和组
useradd -M -s /sbin/nologin nginx
#3、安装 wget -q http://nginx.org/download/nginx-1.6.0.tar.gz
tar zxvf nginx-1.6.0.tar.gz -C /usr/src
cd /usr/src/nginx-1.6.0/
./configure --prefix=/application/nginx-1.6.0 \
--user=nginx --group=nginx \
--with-http_stub_status_module (加模块:网页访问的状态记录服务器也就是日志统计模块)--with-http_ssl_module
make && make install
#4、创建链接文件
ln -s /application/nginx-1.6.0/sbin/nginx /usr/local/sbin/
14 ln -s /applicationnginx-1.6.0 /application/nginx

四、Nginx运行控制方法

~]#nginx -t     #检测配置文件语法
~]#nginx   #启动nginx,可以使用elinks ,curl 127.0.0.1,wget 127.0.0.1检查实际开启效果

重新加载nginx

~]#netstat -anpt | grep nginx
xxx
~]#kill -s HUP xxx 或 kill -1 xxx 或 killall -s HUP nginx

关闭nginx

~]#kill -s QUIT  xxx  或  kill -3 xxx 或 killall -s QUIT nginx

分割日志

~]#kill -s USER1 xxx

平滑升级nginx服务

~]#kill -s USER2 xxx

下面提供一段名为nginx的服务控制脚本:

 #chkconfig: 2345 21 90
#description: nginx server control script
PROG="/usr/local/sbin/nginx"
PIDF="usr/local/nginx/logs/nginx.pid" # 注意:当nginx安装完毕后并没有生成pid文件,需要在配置文档中开启pid功能,才能出现,这个文件里包含了一个pid进程数字
case "$1" in
start)
$PROG
;;
stop)
kill -3 $(cat $PIDF)
;;
restart)
$0 stop #$0代表本文件,这个文件加上可执行权限后,便可这么用
$0 start
;;
reload)
kill -1 $(cat $PIDF)
;;
*)
echo "Usage: $0 (start|stop|restart|reload)"
exit 1
esac
exit 0

然后设置权限添加为系统服务

~]#chmod +x nginx
~]#chkconfig --add nginx

五、Nginx配置文件分析

  /usr/local/nginx/conf/nginx.conf文件包含全局配置、I/O事件配置和HTTP配置这三大块内容,前10行是全局配置,12-14行是I/O事件配置,余下的为HTTP配置;配置语句的格式为 “关键字 值;”

(1)全局配置

  由各种配置语句组成,不适用特定的界定标记、可设置Nginx服务的运行用户、工作进程数、错误日志、PID存放位置等,如果配置项注释掉,表示采用默认设置

具体配置:

user  nginx  nginx;  #运行用户改为我们之前建立的nginx用户及其组
worker_processes 1 #工作进程数量为1,若服务器有多块CPU或者使用多核处理器,可参考CPU核心总数来制定工作进程数,比如两块2核的就写4,或者是2倍,8。

  以下三项我们一起看:

  对于Nginx来说,错误日志分为6级,从严重性由低到高分为debug\info\notice\warn\error\crit;如果下面三个选项我开启 info的话,意味着\info\notice\warn\error\crit这几个级别要做记录,如果写成notice ,那么notice\warn\error\crit要做记录,如果是warn,那么warn\error\crit要做记录依次类推,一般我们开启info那一项。

#error_log  logs/error.log
#error_log logs/error.log notice;
#error_log logs/error.log info;

(2)I/O事件配置

  用“events{}” 界定,指定Nginx进程I/O响应模型、每个进程的连接数等

具体配置:

events  {
      use epoll; #2.6及以上版本的内核(查询方法uname -r),建议使用epoll模型以提高性能;它的工作模式有很多种,如果不写的话这里默认是select/poll工作模式;kequeue/epoll是高效功能模式,2.6以上的版本可以用这种模式;kequeue模式用在BSD系统中(一种开源的UNIX)。
  worker_connections 1024; #每个进程的连接数应根据实际需要来定,一般在10000以下,默认为1024,意思是1个进程可以同时有1024个人访问进来,Nginx很强悍的,之前我们提到它可以同时响应30000到50000之间的数,所以根据需要改大。
}

注:小知识,最大并发用户数算法  worker_processes的值乘以worker_connections的值,当然具体多少还要看服务器硬件、网络带宽等物理条件的性能表现

(3)HTTP配置

  用"http {}"界定,这只访问日志、HTTP端口、网页目录、默认字符集、连接保持,虚拟Web主机、PHP解析等,server{}配置段设置特定的网站(说白了就是配置虚拟主机)。

具体配置:

 include   mine.types                   #表示支持多媒体
log_format main #紧随其后有三行,意思都是定义日志格式的,这个格式的名字叫main
access_log logs/access.log main; #一般启用这个访问日志路径,它的格式就是上面我们提到的名为main的格式
sendfile        on       #是否支持文件发送(下载)
keepalive_timeout   65      #连接保持超时(访问页面后,如果不做任何操作65秒后将断开连接)
listen 80               #监听地址及端口
server_name   www.benet.com     #设置网络名称(FQDN)
charset utf-8 ;           #网站默认字符集,默认是俄语,我们改为utf-8
location / {            #根目录配置
   root  html ;      #网站根目录的位置,这是个相对路径,其实是/usr/local/nginx/html/
  index  index.html index.htm;  #默认首页
}
error_page  404 /404.html; #404报错页是由404.html来调用启动的
error_page 500 502 503 504 /50x.html; #这些报错页都是由50x.html来调用启动的

六、构建静态网站

步骤:(和apahe验证是一样的http://www.cnblogs.com/mangood/p/5947110.html

  1、修改主配置文件、新建www.benet.com网站

  2、准备网站目录与测试网页

  3、配置本地解析或DNS解析

  4、启动并检测服务是否正常

七、查看统计日志

  (1)Nginx内置了HTTP_STUB_STATUS状态统计模块,修改nginx.conf配置文件,指定访问位置/status并打开stub_status配置

 ~]#vim /usr/local/nginx/conf/nginx.conf
添加
location ~ /status {
      stub_status on; #由stub_status来统计日志
      access_log off; #关闭系统自身的日志功能
    }
~]#service nginx reload

 (2)在浏览器中访问/status,看到统计信息

  输入地址http://www.benet.com/status

The server of Nginx(一)——Nginx基础及静态网站的构建的更多相关文章

  1. Nginx静态网站的部署

    静态网站的部署 首先先看一下nginx/conf/nginx.conf 配置文件内的信息: #user nobody; worker_processes 1; #error_log logs/erro ...

  2. Nginx概念及基础安装--详细讲解

    1.主要内容: Nginx的基础           特性           配置部署           优化(了解) 2.Nginx 是什么? Nginx是一个开源的,支持高性能,高并发的www ...

  3. Nginx入门篇-基础知识与linux下安装操作

    我们要深刻理解学习NG的原理与安装方法,要切合实际结合业务需求,应用场景进行灵活使用. 一.Nginx知识简述Nginx是一个高性能的HTTP服务器和反向代理服务器,也是一个 IMAP/POP3/SM ...

  4. Nginx记录-Nginx基础(转载)

    1.Nginx常用功能 1.Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理. Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能.Nginx可以根据不同的 ...

  5. 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用

    URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必 ...

  6. nginx安装及基础配置(含jdk安装及配置)

    0.jdk安装配置 #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz m ...

  7. nginx架构与基础概念

    1       Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...

  8. Setting up Django and your web server with uWSGI and nginx

    https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html Setting up Django and your we ...

  9. 【nginx运维基础(4)】Nginx的日志管理(日志格式与定时分割日志)

    Nginx日志主要分为两种:访问日志和错误日志.日志开关在Nginx配置文件(一般在server段来配置)中设置,两种日志都可以选择性关闭,默认都是打开的. 访问日志access_log #日志格式设 ...

随机推荐

  1. pthread thread mutex synchronous asynchronous communication

    设置进程绑定状态的函数pthread_attr_setscopepthread_attr_t 指向属性结构的指针第二个参数 绑定类型 pthread_scope_system()pthread_sco ...

  2. 点击jQuery Mobile的按钮改变颜色

    jquery-mobile-移动 我有这样的代码来改变点击一个按钮的颜色: $('.fav').live('click', function(e) { $(this).buttonMarkup({ t ...

  3. C#中用SerialPort类中的Write()方法发送十六进制数

    在C#中用SerialPort类中的Write()方法向串口发送十六进制数的方法: MSDN对SerialPort::Write()是这样解释的: 将数据写入串行端口输出缓冲区. 重载列表   名称 ...

  4. Iterator(迭代器)的一般用法 (转)

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的I ...

  5. 【278】◀▶ Python 数学函数说明

    参考:Python 数学函数说明 目录: 一.Python 数学函数 二.Python 随机数函数 三.Python 三角函数 四.Python 数学常量 一.Python 数学函数   函数 返回值 ...

  6. Java多线程-新特征-原子量

    所谓的原子量即操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的. 为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题.在Java5之前,可以通过volatile.synch ...

  7. Theos初步

    [Theos初步] 1.安装Theos.Theos需要在mac和ios上均安装,ios上安装的是Theos服务器,以使得mac的thoes可以直接安装app到ios设备上.如果不需要使用此功能,则仅安 ...

  8. Hadoop之MapReduce(一)简介及简单案例

    简介 Hadoop MapReduce是一个分布式运算编程框架,基于该框架能够容易地编写应用程序,进而处理海量数据的计算. MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算. ...

  9. zookeeper伪集群的搭建

    由于公司服务器数量的限制,我们往往没有那么多的服务器用来搭建zookeeper的集群,所以产生了伪集群的搭建,也就是将多个zookeeper搭建在同一台机器上. 准备工作: 1,一台服务器,我们这里用 ...

  10. 【HDU3394】Railway

    [题目描述] 有一个公园有n个景点,公园的管理员准备修建m条道路,并且安排一些形成回路的参观路线.如果一条道路被多条道路公用,那么这条路是冲突的:如果一条道路没在任何一个回路内,那么这条路是不冲突的 ...