Nginx安装及详解
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安装及详解的更多相关文章
- Nginx安装目录详解
Nginx安装目录详解 1. 查看有关nginx的所有目录列表,输入命令 rpm -ql nginx 可以查看有关nginx目录信息,但是注意 这种命令只能是在基于yum安装的方式才可以. 2. 下 ...
- Nginx 安装与详解
nginx简介 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用.nginx比它大哥apache性能改 ...
- Nginx安装配置详解
http://nginx.org/download/ 下载对应的Nginx 安装nginx之前需要安装依赖包 yum install gcc gcc-c++ zlib-devel pcre-devel ...
- 二、nginx 安装目录详解
rpm -ql nginx 路径 类型 介绍 /etc/logrotate.d/nginx 配置文件 Nginx 日志轮转,用于logrotate服务日志切割 /etc/nginx /etc/ng ...
- nginx 安装目录详解
rpm -ql nginx 路径 类型 介绍 /etc/logrotate.d/nginx 配置文件 Nginx 日志轮转,用于logrotate服务日志切割 /etc/nginx /etc/ng ...
- nginx安装编译详解
./configure --prefix --with解释 http://zhidao.baidu.com/link?url=pksp8xh2OVbRS8_wUMv4ILpb7P6VVIU-NQVp6 ...
- nginx安装目录详解(针对centos)
- Nginx配置文件nginx.conf中文详解(转)
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
随机推荐
- 关于 IntelliJ 的 IDEA PyCharm 等更新 2019.2 后中文乱码 的解决方案
关于IntelliJ 的2019.2 更新后的中文乱码解决方案 设置 备用字体 file -> Setting -> Editor ->Font 由于编程常用英文首选字体font默认 ...
- cs231n官方note笔记
本文记录官方note中比较新颖和有价值的观点(从反向传播开始) 一 反向传播 1 “反向传播是一个优美的局部过程.在整个计算线路图中,每个门单元都会得到一些输入并立即计算两个东西:1. 这个门的输出值 ...
- 配置Windows Server 2008环境
上一章已经把Windows Server2008操作系统安装完毕,接下来配置一下Windows Server环境.配置网络和共享中心.配置桌面环境.配置用户IE设置.安装Telnet远程工具.配置文件 ...
- ASP.NET Core MVC 之过滤器(Filter)
ASP.NET MVC 中的过滤器允许在执行管道中的特定阶段之前或之后运行代码.可以对全局,也可以对每个控制器或每个操作配置过滤器. 1.过滤器如何工作 不同的过滤器类型在管道中的不同阶段执行,因此具 ...
- C语言连接mysql,用GCC编译
1. main.c文件内容如下 #include <stdlib.h>#include <stdio.h>#include <winsock.h>#include ...
- Luogu P5490 扫描线
模板题,想象一条线从左边扫到右边,只有在矩阵边界才会产生影响,所以我们离散化缩小数据范围,再用线段树维护扫描线上的情况,得出结果 #include<bits/stdc++.h> #defi ...
- Kafka SCRAM和PLAIN实战
1.概述 目前Kafka ACL支持多种权限认证,今天笔者给大家介绍一下SCRAM和PLAIN的权限认证.验证环境如下: JDK:1.8 Kafka:2.3.0 Kafka Eagle:1.3.8 2 ...
- SpringBoot打包部署简单说明
SpringBoot项目打包部署 一.jar包方式 这种使用SpringBoot内嵌的Tomcat进行部署 打包方式默认jar,所以下面加也行,不加也行 <packaging>war< ...
- 十分钟搞懂Lombok使用与原理
1 简介 Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它.Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的 ...
- python学习——列表和元组
一.列表 1)列表介绍 列表是Python内置的一种数据类型. >一组有序项目的集合(从第一个成员序号为0开始依次递增排序) >可变的数据类型(可进行增删改查) >列表中可以包含任何 ...