> 文章列表 > Nginx快速上手~

Nginx快速上手~

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
复制代码

最终的到自定义的页面了

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

在配置文件中设置

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;}}
}
复制代码

最终启动即可

作者:发光的水杯
链接:https://juejin.cn/post/7221730798625128509
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。