nginx快速入门

注:本文针对官网的快速入门教程进行一个中文的解释,以协助英文阅读能力较差的学习者快速上手

参考官网连接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 {
    ...
    }
}

装备文件中放置在任何上下文之外的指令都被认为是在主上下文中eventshttp 指令在主上下文中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

最终的到自界说的页面了

nginx快速入门

设置一个简略的代理服务器

在装备文件中设置

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;
        }
	}
}

最终发动即可