nginx的基础应用
nginx的基础应用
一、简介
今天我们将介绍一些nginx的简单应用,启动、停止nginx,重载nginx的配置,nginx配置文件的格式,如何配置nginx服务静态资源,如何配置nginx作为反向代理服务器。
nginx有一个主进程和几个工作进程。主进程主要是读取和解析配置文件,以及保持工作进程工作;工作进程处理实际的请求。nginx利用基于事件的模型和运行的操作系统在工作进程之间有效地分配请求。工作进程的个数在配置文件中定义,推荐设置为CPU的核数。
nginx配置文件中的配置决定了nginx如何工作,配置文件的名字一般叫做nginx.conf,它的目录是/usr/local/nginx/conf,/etc/nginx或者/usr/local/etc/nginx。
二、nginx的启动、停止、和重载配置
想要运行nginx,运行可执行文件即可。
/usr/sbin/nginx
nginx一旦运行起来,它就可以使用-s参数控制,语法格式如下:
nginx -s signal
signal的列表如下:
- stop 快速关闭
- quit 优雅的关闭
- reload 重载配置文件
- reopen 重新打开log文件
例如,等nginx进程处理完当前的所有请求后,停止nginx进程,命令如下:
nginx -s quit
如果修改了nginx配置文件,并且想要配置文件生效,应当执行如下命令:
nginx -s reload
当主进程接收到reload命令时,它会检查新配置文件的语法并尝试应用新的配置文件,如果成功了,主进程会启动新的工作进程并且发送消息停止旧的工作进程;如果配置文件有错误,主进程将回滚并继续使用旧的配置文件工作。旧的工作进程收到关闭命令后,停止接受新的请求,并且直到当前的所有请求被处理完后,旧的工作进程关闭。
-s参数也可以通过unix命令发送给nginx进程。这种情况下,-s参数通过给定的nginx进程id发送给nginx进程。nginx进程id一般写在nginx.pid文件中,目录通常在/usr/local/nginx/logs 或者 /var/run。例如:如果nginx的主进程id是1628,想要优雅的关闭nginx,可执行以下命令:
kill -s QUIT
获取当前正在运行的nginx进程,可执行如下命令:
ps -ax | grep nginx
三、配置文件的结构
nginx的配置文件由多个指令集组成,指令集分为简单指令和模块指令。简单的指令由名字和参数组成,由空格和分号(;)隔开。块指令和简单指令有着相同的结构,但是“;”被“{}”取代,如果块指令中还有其他的块指令,它被称作上下文(context)。例如:events,http,server,location。
#后面的文件是注释。
四、服务静态内容
nginx的一个重要的功能就是服务静态文件(例如:图片和静态html)。在这里,我们举一个例子,根据不同的请求,提供不同的文件服务,本地的目录为/data/www,该目录存放html文件,/data/image存放图片文件。我们需要修改配置文件,在http块中增加一个server块,在server块中增加连个location块。
首先,我们在/data/www目录下创建一个html文件,在文件中随意写一些内容,并且在/data/image目录下随机放一些图片。
接下来,我们打开配置文件,文件中默认写了一些server的例子,我们将其全部注释掉。从现在开始,我们新加一个server块,如下:
http {
server {
}
}
通常情况下,配置文件中,包含多个server块,它们通过监听不同的端口和服务名称区分。一旦nginx决定哪个server处理请求,它就会监测请求头中的URI,和server块中的location指令中的参数是否一致。
向server块中添加location块,如下:
location / {
root /data/www;
}
location块中指定“/”为前缀和请求中的URI进行比较,匹配的请求,URI将会被加入到root指令集中指定的路径,“/data/www”,生成一个访问本地文件系统的文件请求路径。上面的location提供了一个最小的前缀,当其他的location块都不匹配时,这个location将被使用。
下面,我们加入第二个块,如下:
location /images/ {
root /data;
}
它将匹配所有以“/images/”开头的请求,location / 也匹配这样的请求,但是只是最小的匹配。
配置的最终结果如下:
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
这是一个可以工作的配置,它监听80端口,并且可以通过本机的http://localhost/ 访问。以/images/开头的请求,服务将从/data/images目录发送文件。例如:请求http://localhost/images/example.png, 将会以/data/images/example.png文件作为响应。如果这个文件不存在,将会返回404错误。请求的URI不是以/images/开头的,将会映射到/data/www目录中,例如:http://locahost/some/example.html将会映射到/data/www/some/example.html。
要使配置生效,直接启动nginx(没有启动)或重载配置文件
nginx -s reload
如果nginx没有向配置的那样工作,你可以在access.log和error.log中找到原因,日志的目录 /usr/local/nginx/logs 或者 /var/log/nginx。
五、设置一个简单的代理服务器
nginx作为代理服务器使用是比较频繁的,它接受请求,分发它们到被代理的服务器,取回响应,并把它们发送给客户端。
我们将配置一个基本的代理,它从本地目录服务图片请求,发送其他的请求到被代理的服务器,在本例中,两个server将在一个nginx实例中配置。
首先,通过新加一个server块定义被代理的服务,如下:
server {
listen ;
root /data/up1;
location / {
}
}
这是一个简单的服务,它监听8080端口(上一个server中,listen并没有指定,它监听默认的端口80),它映射所有的请求到本地文件系统/data/up1目录。创建这个目录并新建
index.html文件。值得注意的是,在server上下文中配置root,当请求选中的location块中,没有root指令时,将会使用server中配置的root。
接下来,我们修改先前的server块,使他成为一个代理服务器配置。在第一个location块中,我们添加proxy_pass指令,它的参数为http://localhost:8080,如下:
server {
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}
我们将修改第二个location块,它现在映射以/images/开头的请求到/data/images目录。我们修改其为通过文件扩展名匹配的方式,匹配请求。如下:
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
这个参数是一个正则表达式,它匹配所有以.gif,jpg,png结尾的请求,在正则表达式之前必须出现“~”。匹配的请求将映射到/data/images目录。
当nginx为一个请求选择服务块时,它首先检查指定前缀的location,并记住最长的前缀,然后检查指定正则表达式的location,如果请求匹配了正则表达式,nginx将选择这个location服务请求,否则,将选择先前记住的最长的前缀location。
代理服务的server配置如下:
server {
location / {
proxy_pass http://localhost:8080/;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
这个服务将过滤以.gif,.jpg,.png结尾的请求,并将它们映射到/data/images目录,其他的请求将被转发到前面配置的被代理的服务。
要是配置生效,reload配置即可。
至此,nginx的基本配置介绍完了,如有问题,欢迎大家提问~~
nginx的基础应用的更多相关文章
- nginx 的基础配置[转]
nginx 的基础配置 分类: 工具软件2013-11-13 23:26 11人阅读 评论(0) 收藏 举报 目录(?)[-] 管理配置文件 全局配置 虚拟机server配置 location配置 ...
- nginx的基础应用(续)
nginx的基础应用(续) 一.简介 上一篇文章我们介绍了nginx的基础应用,其中讲到了nginx作为代理服务器的使用,但是漏了一个重要的,也是使用非常普遍的特性--负载均衡.今天,我们将这段内容补 ...
- Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性
简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...
- Nginx——1.基础知识
Nginx——1.基础知识 作为高速.轻量.高性能等优点集于一身的服务器,Nginx在近些年迅速发展并不断扩大市场份额,甚至在最近其市场份额一举超过微软的IIS,跃身到第二位,仅次于Apache. 但 ...
- nginx实现基础web
目录 nginx实现基础web 什么是lnmp lnmp架构如何工作 Nginx与Fast-CGO详细工作流程 LNMP环境准备 一,部署LNMP 1.使用nginx官方源 2.创建nginx用户 3 ...
- Nginx web基础入门
目录 Nginx web基础入门 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 日志格式 game日志记录实战 日志切割 手写虚拟 ...
- Linux架构之Nginx Web基础1
第41章 Nginx Web基础入门 41.1 Nginx部署 41.1.1 Nginx的安装方式 源码编译 官方仓库 epel仓库 优点 规范 安装简单 安装简单 便于管理 配置易读 缺 ...
- Nginx 常用基础模块
目录 Nginx 常用基础模块 Nginx日志管理 nginx日志切割 Nginx目录索引 Nginx状态监控 Nginx访问控制 Nginx访问限制 Nginx 请求限制配置实战 Nginx Loc ...
- Nginx Web 基础入门
目录 Nginx Web 基础入门 Nginx快速安装 两种方式部署Nginx 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 虚拟 ...
随机推荐
- Python 使用正则表达式
当使用正则表达式时,re 模块内部会干两件事情 1.编译正则表达式,如其字串本身不合法,报错 2.用编译后的正则表达式去匹配字符串 re_telephone = re.compile(r'^(\d{3 ...
- Time模块和datetime模块
Time模块和datetime模块 一. 调用 import time #调用time模块 二.使用方法 1.time.time 拿到时间戳.以Linux诞生年份1970年开始计算到程序执 ...
- LeetCode 259. 3Sum Smaller (三数之和较小值) $
Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 < ...
- 学习Identity Server 4的预备知识
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...
- CentOS设置系统时间、硬件时间、以及定时校对时间
CentOS设置系统时间和时区 一.设置时区 方法一:使用setup工具 setup 选择Timezone configuration 选择Asia/Shanghai 空格键勾选上System clo ...
- java自动化-juint框架简述
本人使用的是java的juint框架来组织的自动化测试,故我这边需要简单介绍一下juint框架 首先,建议自行百度一下juint框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...
- hdu 4717 Tree2cycle(树形DP)
Tree2cycle Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Tot ...
- Codeforces Round #386 (Div. 2) C. Tram
C. Tram time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- 0_Simple__matrixMul + 0_Simple__matrixMul_nvrtc
矩阵乘法,使用一维线程块和共享内存.并且在静态代码和运行时编译两种条件下使用. ▶ 源代码:静态使用 #include <stdio.h> #include <assert.h> ...
- Centos7下部署ceph 12.2.1 (luminous)集群及RBD使用
前言 本文搭建了一个由三节点(master.slave1.slave2)构成的ceph分布式集群,并通过示例使用ceph块存储. 本文集群三个节点基于三台虚拟机进行搭建,节点安装的操作系统为Cento ...