Nginx
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx相关的知识,希望对你有一定的参考价值。
第1章 nginx
1.1 什么是nginx?
nginx是一个开源,支持高性能,高并发的www服务和代理服务的软件
nginx因具有高并发,尤其是静态资源,占用系统资源少,并且功能丰富而逐渐流行起来
1.2 nginx 软件特性说明:
1. 支持高并发,能支持几万并发连接(特别是静态小文件业务环境)
2. 资源消耗少,在三万并发连接下,开启10个nginx线程消耗的内存不到200M
3. 可以做http反向代理及加速缓存,即负载均衡的功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能
4. 具备squid等幻夜缓存软件的缓存功能
5. 支持异步网络IO事件模型epoll
epoll-->利用登录人员信息,快速找到人员信息
select-->管理人员,带着你一个一个去找
1.3 nginx软件的主要应用:
1. www服务
2. 反向代理或负载均衡
3. 前端业务数据缓存服务
1.4 nginx软件的编译安装:
1. 进入到指定目录下,下载安装包
cd /server/tools
wget http://nginx.org/download/nginx-1.12.2.tar.gz
然后yum安装依赖软件:
[[email protected] nginx-1.12.2]# yum -y install pcre-devel openssl-devel
2. 解压
[[email protected] tools]# tar xf nginx-1.12.2.tar.gz
[[email protected] tools]# ll
total 964
drwxr-xr-x 8 1001 1001 4096 Oct 17 21:16 nginx-1.12.2
-rw-r--r-- 1 root root 981687 Oct 17 21:20 nginx-1.12.2.tar.gz
[[email protected] tools]# cd nginx-1.12.
1.5 编译安装三部曲:
a. 配置参数
--prefix=path 指定软件安装的路径
--user=www 创建一个虚拟用户,管理nginx服务的worker进程
注:这里系统中如果没有www用户的话要创建一个用户
--group=www 创建一个虚拟用户组,管理nginx服务worker进程
--with-http_ssl_module 让nginx服务可以支持https访问
--with-http_stub_status_module 便于监控软件监视nginx服务运行状态
[[email protected] nginx-1.12.2]# ./configure --prefix=/application/nginx-1.12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
[[email protected] nginx-1.12.2]# echo $?
0
b. 编译---翻译
编译过程实质是将各种程序语言转换为系统可识别的二进制信息
[[email protected] nginx-1.12.2]# make
[[email protected] nginx-1.12.2]# echo $?
c. 编译安装
[[email protected] nginx-1.12.2]# make install
d. 创建程序目录软链接文件
[[email protected] tools]# ln -s /application/nginx-1.12.2/ /application/nginx
[[email protected] tools]# ll /applicaion
total 4
lrwxrwxrwx 1 root root 26 Feb 2 10:54 nginx -> /application/nginx-1.12.2/
drwxr-xr-x 6 root root 4096 Feb 2 10:42 nginx-1.12.2
e. 启动nginx服务
[[email protected] application]# /application/nginx/sbin/nginx
[[email protected] application]# ps -ef |grep nginx
root 12740 1 0 10:55 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx
www 12741 12740 0 10:55 ? 00:00:00 nginx: worker process
root 12744 10122 0 10:56 pts/6 00:00:00 grep nginx
master为nginx服务的主进程 worker进程为真正处理用户请求的进程
f. 检测安装是否成功:在浏览器上输入本地ip地址,查看是否可以访问即可
1.5.1 部署nginx软件可能会遇到的问题:
[[email protected] application]# /application/nginx/sbin/nginx –V -V可以显示安装的参数信息
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/application/nginx-1.12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
1.6 nginx软件目录结构
drwxr-xr-x 2 root root 4096 Feb 2 10:42 conf 配置文件目录
drwxr-xr-x 2 root root 4096 Feb 2 10:42 html 站点目录
drwxr-xr-x 2 root root 4096 Feb 2 10:55 logs 日志目录
drwxr-xr-x 2 root root 4096 Feb 2 10:42 sbin 保存服务命令目录
1.7 配置文件目录说明:
-rw-r--r-- 1 root root 3957 Feb 2 10:42 mime.types 媒体资源类型文件
-rw-r--r-- 1 root root 2656 Feb 2 10:42 nginx.conf nginx服务主配置文件
1.8 精简主配置文件内容:
[[email protected] conf]# grep -Ev "#|^$" nginx.conf.default >nginx.conf
1.9 nginx配置文件区块分类:
worker_processes 1; worker进程数量
events { 事件区块开始
worker_connections 1024; 每个worker进程支持的最大连接数
} 事件区块结束
http { http区块开始
include mime.types; nginx支持的媒体类型库文件
default_type application/octet-stream; 默认的媒体类型
sendfile on; 开启高效传输模式
keepalive_timeout 65; 连接超时
server { 第一个server区块开始,表示一个独立的虚拟主机站点
listen 80; 提供服务的端口 默认80
server_name localhost; 提供服务的域名主机名
location / { 第一个location 区块开始
root html; 站点的根目录,相当于nginx的安装目录
index index.html index.htm; 默认首页文件,多个用空格分开
} 第一个location 区块结束
error_page 500 502 503 504 /50x.html; 出现这些错误状态码时,使用50x.html回应客户
location = /50x.html { location区块开始,访问50x.html
root html; 指定对应的站点目录为
}
}
}
1.10 nginx命令参数:
-V : show version and configure options then exit
-t : test configuration and exit 检查语法
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload 重新加载配置文件
1.11 编写静态访问页面文件信息:
<html>
<meta charset="utf-8">
<head>
<title>老男孩教育43期最牛</title>
</head>
<body>
老男孩教育43期最牛
<table border=1>
<tr> <td>01</td> <td> </td> </tr>
<tr> <td>02</td> <td> </td> </tr>
<tr> <td>03</td> <td> </td> </tr>
</table>
<a href="http://blog.oldboyedu.com">
<img src="oldboy.jpg" /> 图片的名字
</a>
</body>
</html>
1.12 如何利用pid文件查看nginx服务是否开启?
nginx服务在启动后,/application/nginx/logs/目录中会自动生成一个pid文件,来记录nginx服务的进程号,所以利用这个文件可以判断nginx服务是否已经开启
[[email protected] application]# /application/nginx/sbin/nginx 启动nginx服务
[[email protected] application]# find / -type f -name "nginx.pid"
/application/nginx-1.12.2/logs/nginx.pid
[[email protected] logs]# ll
total 12
-rw-r--r-- 1 root root 3017 Feb 2 12:47 access.log
-rw-r--r-- 1 root root 1714 Feb 3 23:27 error.log
-rw-r--r-- 1 root root 6 Feb 4 11:32 nginx.pid nginx服务pid文件
[[email protected] logs]# kill 15623
[[email protected] logs]# kill 15623
-bash: kill: (15623) - No such process
[[email protected] logs]# ll 杀死进程后,pid文件即不存在
total 8
-rw-r--r-- 1 root root 3017 Feb 2 12:47 access.log
-rw-r--r-- 1 root root 1714 Feb 3 23:27 error.log
以上是关于Nginx的主要内容,如果未能解决你的问题,请参考以下文章