注:本文针对官网的快速入门教程进行一个中文的解释,以帮助英文阅读能力较差的学习者快速上手
参考官网连接Beginner's Guide (nginx.org)
Centos下的安装
sudo yum install yum-utils
# 创建文件
vim /etc/yum.repos.d/nginx.repo
# 输入以下内容
####
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
####
# 进行安装
sudo yum install nginx
复制代码
若其他操作系统的安装请参考官网Installing nginx
nginx介绍
nginx可用于提供静态内容,做代理服务器……
nginx由一个主进程和几个工作进程组成,主线程的目标是去读取配置并管控工作线程,工作线程处理实际的请求。
nginx的运行模式由配置文件进行控制,配置文件名为nginx,一般情况下被放置在/usr/local/nginx/conf
, /etc/nginx
, or /usr/local/etc/nginx
.
启动、停止和重新载入配置
启动nginx通过
nginx
复制代码
查看运行的nginx进程
ps -ef | grep nginx
# 结果
root 13329 1 0 10:00 ? 00:00:00 nginx: master process nginx
nginx 13330 13329 0 10:00 ? 00:00:00 nginx: worker process
nginx 13331 13329 0 10:00 ? 00:00:00 nginx: worker process
root 13342 10141 0 10:00 pts/1 00:00:00 grep --color=auto nginx
复制代码
启动nginx之后,可以通过以下的格式来控制ngnix了
nginx -s [signal]
复制代码
signal有以下的取值
stop
— 快速关闭quit
— 和平的方式进行关闭 (工作线程会继续服务当前正在请求的线程)reload
— 重新载入配置- 主进程读入配置,并检查语法的正确性
- 成功之后,主进程会通知工作线程关闭,并不再接受新的请求
- 工作线程仍会处理当前的请求,再进程关闭
reopen
— 重新打开日志文件
配置文件的结构
配置文件由指令构成,指令分为简单指令和块指令。
简单指令由空格分开的name和parameters组成,以分号作为结束
name parameters;
块指令的结构类似于简单指令,但它不是以分号结尾,而是以一组用大括号 { 和 } 括起来的附加指令结尾。如果块指令在大括号内包含其他指令,则它被称为上下文 (context)。如下
http {
server {
...
}
}
复制代码
配置文件中放置在任何上下文之外的指令都被认为是在主上下文中。events 与 http 指令在主上下文中,server 指令在 http 上下文, location指令在 server 上下文。
使用#作为注释
对外提供静态内容(提供网页服务)
首先定义想要提供的静态资源,例如在/data/www中定义index.html页面,index.html中写入以下内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nginx学习</title>
</head>
<body>
<h1>欢迎学习nginx</h1>
</body>
</html>
复制代码
修改/etc/nginx/nginx.conf中的配置文件,注释掉原有的http块指令,添加添加以下内容
http {
server {
listen 80;
server_name localhost;
location / {
root /data/www;
}
}
}
复制代码
上面这些配置是什么意思呢,http代表响应http请求,server被称为虚拟主机,用于响应http请求。location用于定义响应内容的匹配规则。
请求到达后,对应location的匹配规则是这样的,对location后面的路径进行匹配,找到最长前缀匹配的location,将对应location的root的路径拼接进URI中,最后在文件系统中查找对应的位置
例如:
对于http://localhost:80/index.html
则会匹配到/data/www/index.html文件
对于http://localhost:80/images/a.png
则会匹配到/data/www/images/a.png文件
最后启动一下nginx试试
nginx
复制代码
如果配置未生效
继续执行
nginx -s reload
复制代码
最终的到自定义的页面了
设置一个简单的代理服务器
在配置文件中设置
http {
# 监听8080端口的服务器,将URI映射到/data/up1中
server {
listen 8080;
root /data/up1;
location / {
}
}
# 代理服务器
server {
location / {
proxy_pass http://localhost:8080/; # 代理路径
}
# 将以gif,jpg,pnf结尾的URI映射到本地/data/images文件系统
location ~ \.(gif|jpg|png)$ { # 以~开头的为正则表达式
root /data/images;
}
}
}
复制代码
最终启动即可。