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

Nginx安装及详解的更多相关文章

  1. Nginx安装目录详解

    Nginx安装目录详解 1. 查看有关nginx的所有目录列表,输入命令  rpm -ql nginx 可以查看有关nginx目录信息,但是注意 这种命令只能是在基于yum安装的方式才可以. 2. 下 ...

  2. Nginx 安装与详解

    nginx简介 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用.nginx比它大哥apache性能改 ...

  3. Nginx安装配置详解

    http://nginx.org/download/ 下载对应的Nginx 安装nginx之前需要安装依赖包 yum install gcc gcc-c++ zlib-devel pcre-devel ...

  4. 二、nginx 安装目录详解

    rpm -ql nginx 路径 类型 介绍 /etc/logrotate.d/nginx  配置文件  Nginx 日志轮转,用于logrotate服务日志切割 /etc/nginx /etc/ng ...

  5. nginx 安装目录详解

    rpm -ql nginx 路径 类型 介绍 /etc/logrotate.d/nginx  配置文件  Nginx 日志轮转,用于logrotate服务日志切割 /etc/nginx /etc/ng ...

  6. nginx安装编译详解

    ./configure --prefix --with解释 http://zhidao.baidu.com/link?url=pksp8xh2OVbRS8_wUMv4ILpb7P6VVIU-NQVp6 ...

  7. nginx安装目录详解(针对centos)

  8. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  9. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

随机推荐

  1. Linux杀不死的进程之CPU使用率700%

    1. 问题发现 [root@zwlbs3 ~]# top i. 发现有个进程CPU使用率居然700%,COMMAND 是一些随机的字符串组成,完了~ 中标了:第一想到就是“沙雕”它,kill 命令给我 ...

  2. 洛谷 P4124 [CQOI2016]手机号码

    题意简述 求l~r之间不含前导零,至少有三个相邻的相同数字,不同时含有4和8的11位正整数的个数 题解思路 数位DP,注意在l,r位数不够时补至11位 代码 #include <cstdio&g ...

  3. Python 获取服务器的CPU个数

    在使用gunicorn时,需要设置workers, 例如: gunicorn --workers=3 app:app -b 0.0.0.0:9000 其中,worker的数量并不是越多越好,推荐值是C ...

  4. Executor线程池只看这一篇就够了

    线程池为线程生命周期的开销和资源不足问题提供了解决方 案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上. 线程实现方式 Thread.Runnable.Callable //实现Runn ...

  5. 快速了解Python并发编程的工程实现(下)

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  6. LoRaWAN stack移植笔记(六)_调试2

    前言 调试的过程中碰到的问题基本都是以前没有遇到过的,而且需要对整个协议栈及射频方面的工作流程较熟悉才能找到问题的原因,需要多读SX1276的数据手册以及与射频芯片的物理层通信例程和MAC层通信例程进 ...

  7. Redis的常用命令与Java整合及高级应用篇

    一,redis是什么? ​ 首先数据库分为关系型数据库和非关系型数据库,关系型数据库是采用关系模型来组织数据的数据库,简单来说就是二维表格模型,同时保证事务的一致性. ​ 相反非关系型数据库采用key ...

  8. 《Java 8 in Action》Chapter 4:引入流

    1. 流简介 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以透明地并行 ...

  9. Spring-Boot:Profile简单示例

    //Resources目录下创建 application.properties spring.profiles.active=prod //Resources目录下创建 application-pro ...

  10. [工具使用]-利用latex管理创建自己的ACM模板

    从很早入坑ACM开始,便和各种算法的模板打着交道,虽然kaungbin的模板已经足够强大,但是自己在平常做题中也逐渐有着自己的一些模板,也有一些kuangbin模板中没有的更快的板子,虽然不确定时候以 ...