Nginx简介:

Nginx(发音engine x)专为性能优化而开发的开源软件,是HTTP、反向代理、邮件代理、TCP/UDP协议代理软件,由俄罗斯的作者Igor Sysoev开发,其最知名的优点是它的稳定性和低系统资源消耗(硬件资源占用较低),以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求),是一个轻量级WEB服务器软件。正因为如此,大量提供社交网站、新闻资讯、电子商务以及虚拟主机等服务的企业纷纷选择Ngnix来提供WEB服务。如新浪,淘宝(Tengine),京东,金山,网易,腾讯,百度文库,51cto,人人网等。

 Nginx版本:

社区版 www.nginx.org

         企业版 www.nginx.com(被F5收购)

tengine tengine.taobao.org

Nginx官方站点

最新的稳定版:1.16.1

最新的开发板:1.17.3

===================================================================

部署Nginx软件:

1)安装支持软件:

Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。

首先我们先关闭系统安全机制:

[root@nginx~]#systemctl stop firewalld

[root@nginx~]#iptables-F

[root@nginx~]#setenforce 0

安装nginx所需的软件包

[root@nginx~]# yum -y install pcre-devel  zlib-devel  openssl-devel

2) 创建运行用户,组

[root@nginx~]# useradd -M -s /sbin/nologinnginx

3)编译安装nginx:

   wget http://nginx.org/download/nginx-1.16.1.tar.gz (下载1.16.1版本nginx, wget命令需要安装,也可去官网下载源码包)

释放 nginx源码包:

   tar xf nginx-1.16.1.tar.gz -C /usr/src

4)配置编译:

[root@nginx~]# cd /usr/src/nginx-1.16.1/

[root@nginxnginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx   --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install

注:配置前可以参考:./configure --help给出说明

 --prefix             设定Nginx的安装目录

 --user和--group      指定Nginx运行用户和组

 --with-http_stub_status_module   启用http_stub_status_module模块以支持状态统计

 --with-http_ssl_module  启用SSL模块

 --with-http_flv_module  启用FLV模块,提供寻求内存使用基于时间的偏移量文件

为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用Nginx的主程序。

[root@nginxnginx-1.16.1]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

[root@nginxnginx-1.14.2]# ll /usr/local/bin/nginx  //查看软连接是否创建成功

5)Nginx 的运行控制:

与Apache的主程序httpd类似,Nginx的主程序也提供了"-t"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用"-c"选项来指定路径。

[root@nginxconf]#nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

6)启动,停止  Nginx:

直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加"-c 配置文件路径"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他WEB服务软件,应采取措施(修改端口,停用或卸载其他软件)避免部突。

[root@nginxconf]# netstat -anpt |grep :80

 [root@nginxconf]#nginx

主程序Nginx支持标准的进程信号,通过kill或者killall命令传送

  HUP          重载配置        等同于-1

  QUIT        退出进程        等同于-3

  KILL          杀死进程        等同于-9

[root@nginx~]#killall -s HUP nginx

[root@nginx~]#killall -s QUIT nginx

[root@nginx~]# netstat -anpt |grep :80

当Nginx进程运行时,PID号默认存放在/usr/local/nginx/logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制。

为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和systemctl工具来进行管理,也更加符合RHEL系统的管理习惯。

[root@nginx~]# vim /etc/init.d/nginx

#!/bin/bash

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in

start)

         $PROG

;;

stop)

         kill -s QUIT $(cat $PIDF)

;;

restart)

         $0 stop

         $0 start

;;

reload)

         kill -s HUP $(cat $PIDF)

;;

*)

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

         exit 1

esac

exit 0

 [root@nginx~]#chmod +x /etc/init.d/nginx

[root@nginx~]#chkconfig --add nginx

[root@nginx~]#chkconfignginx on

[root@nginx~]#chkconfig --list nginx

nginx        0:关闭     1:关闭     2:启用     3:启用     4:启用     5:启用     6:关闭

nginx.conf文件结构

在Nginx服务器的主配置文件nginx.conf中,包括全局配置I/O事件配置HTTP配置这三大块内容,配置语句的格式为"关键字 值;"(末尾以分号表示结束),以"#"开始的部分表示注释。

1)全局配置

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

常用配置项:

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

worker_processes 2;//指定nginx启动的工作进程数量,建议按照cpu数目来指定,一般和CPU核心数相等。

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

worker_rlimit_nofile 102400; //这个指令是指当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit-n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。(通过"ulimit–n 数值"可以修改打开的最多文件数目)

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

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

2)I/O事件配置

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

events {

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

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

}

3)HTTP配置

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

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

http {

include       mime.types;

default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

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

sendfile        on;                                          //支持文件发送(下载)

keepalive_timeout  65;                                    //连接保持超时

server {                                                                 //web服务的监听配置

listen       80;                                        //监听地址及端口(IP:PORT)

server_name  www.crushlinux.com;   //网站名称(FQDN)

charset utf-8;                                              //网页的默认字符集

location / {                                                   //跟目录配置

root   html;                                      //网站根目录的位置安装位置的html中

index  index.html index.htm;        //默认首页(索引页)

}

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

location = /50x.html {                                //错误页面配置

root   html;

}

状态统计模块

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

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

[root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

location /status {

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

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

        }

[root@nginxconf]#systemctl restart nginx

浏览器访问 http://192.168.200.111/status

Active connections  表示当前活跃的连接数,

第三行的三个数字表示Nginx当前总共处理了3个连接,成功创建3次握手,总共处理了12个请求。

Reading表示Nginx读取到客户端Header信息数,

Writing表示Nginx返回给客户端的Header信息数

Waiting表示Nginx已经处理完,正在等候下一次请求指令时的驻留连接数。

虚拟主机应用:

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

例如:要创建两个站点www.canflyfish.com和www.fish.com

为两个虚拟WEB主机分别建立根目录,并准备测试首页

[root@nginx~]#mkdir /usr/local/nginx/html/canflyfish

[root@nginx~]#mkdir /usr/local/nginx/html/fish

[root@nginx~]#echo "<h1>www.canflyfish.com</h1>"

>/usr/local/nginx/html/canflyfish/index.html

[root@nginx~]# echo "<h1>www.fish.com</h1>" > /usr/local/nginx/html/fish/index.html

[root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

http {

    include       mime.types;

default_type  application/octet-stream;

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                            '"$http_user_agent" "$http_x_forwarded_for"';

access_log  logs/access.log  main;

sendfile        on;

keepalive_timeout  65;

    server {

        listen       80;

server_name  www.crushlinux.com;

                  charset utf-8;

access_log  logs/crushlinux.access.log  main;

         location / {

            root   html/crushlinux;

index  index.html index.htm;

        }

    }

    server {

        listen       80;

server_name  www.cloud.com;

        charset utf-8;

access_log  logs/cloud.access.log  main;

        location / {

            root   html/cloud;

index  index.html index.htm;

        }

    }

}

[root@nginx~]# /etc/init.d/restart nginx

[root@nginx~]# vim /etc/hosts

192.168.200.111 www.canflyfish.com

192.168.200.111 www.fish.com

虚拟主机访问测试:

[root@nginx~]#elinks --dump http://www.canflyfish.com

                                 www.canflyfish.com

[root@nginx~]#elinks --dump http://www.fish.com

                                  www.fish.com

最新文章

  1. FreeBSD_11-系统管理——{Part_9 - SubVersion}
  2. [转载]iOS9 使用CoreLocation
  3. php图片防盗链的小测试
  4. C#带小括号的运算
  5. php之无限极分类
  6. 【第三课】ANR和OOM——贪快和贪多的后果(下)
  7. seleniumAccessors
  8. 前端的小Demo——涉及keyCode
  9. html5表单和伪类
  10. 【转】Jqgrid学习之ColModel API
  11. TCP协议三次握手与四次挥手通俗解析
  12. 20165314《网络对抗技术》week1 Exp0 Kali安装
  13. 并发编程(十)—— Java 并发队列 BlockingQueue 实现之 SynchronousQueue源码分析
  14. 一款可视化的在线制作H5
  15. python 引入本地 module
  16. DDD初探
  17. NBUT1457
  18. (改进)Python语言实现词频统计
  19. 利用python,简单的词语纠错
  20. win7下安装配置ftp服务器

热门文章

  1. p2p 打洞专场(转)
  2. javaScript今日总结
  3. Docker之- 使用Docker 镜像和仓库
  4. WPF DataGrid点击列头选择全列并具有背景色
  5. insertSql语句中的trim标签的使用
  6. java中Long类型和long类型的大小比较
  7. 高并发下,调整IIS相关的设置,以提高服务器并发量
  8. 学习js都学习什么?
  9. 学测试,看视频?NONONO,除非这种情况
  10. mysql安装-yum方式