73.Nginx学习笔记2|Nginx配置结构+最小配置
2022-10-25 本文已影响0人
人生玩家Eli
- 写文用时:3小时5分
输出是最好的学习方式,写文或实践都是输出,一些计算机方面的技能更适合实践。
nginx配置结构
- nginx中有很多的块,块里面有很多配置项。
- events、http、server、location这些都是块。
- server、location这些都和http有关,所以都在http的下面。
events{
# 一个完整的nginx配置文件一定要有events块,不然会报错。
}
http{
server{
# 可以有多个server,用于对不同的网站做不同的配置
# server块也被叫做“虚拟主机”部分
}
server{
location{
# 可以有多个location,用于匹配URL
}
location{
}
}
}
最小配置
下面列出的配置就是nginx的最小配置了。
用到了三个块(events、http、server)和两个配置项(listen、root)。
events{
# 一个完整的nginx配置文件一定要有events块,不然会报错。
}
http {
server {
listen 8081; # 监听端口8081
root html; # root指令用来设置请求根目录,可以使用相对于项目目录的路径,这里使用项目目录下的html文件夹作为请求根目录。
}
}
第一步--搭建目录
- 新建一个目录作为项目的根目录。
- 在这个目录新建文件夹"html"和"config"
第二步--写入文件
- 在html文件夹下新建一个文本文件,就叫"test.html",在这个文件里随意打些字就好。
- 在config文件夹下新建一个文本文件,就叫"nginx.conf",然后把上面的最小配置粘进去。
第三步--运行(错误示范)
- 回到项目根目录,执行命令
sudo nginx -c config/nginx.conf
。 - 嗯???有报错?报错信息如下:
open() "/etc/nginx/config/nginx.conf" failed (2: No such file or directory)
可以看到,nginx去"/etc/nginx"目录下查找配置了。
所以这个地方不能使用相对路径,应该使用绝对路径。
这个地方把我给坑惨了,我一开始是使用命令"sudo nginx -c nginx.conf"来运行的。
然而"/etc/config"目录下正好有个默认的配置文件叫"nginx.conf",
所以我运行了好几次都觉得配置文件没生效,但又找不到原因。
第四步--运行(正确示范)
- 如果想使用相对路径,需要使用-p参数来指定项目的根目录,像这样:sudo nginx -p `pwd` -c config/nginx.conf
- 不出意外的话,应该就成功运行起来了,在浏览器输入localhost:8081/test.html就能看到test.html文件里的内容了!
为什么我一开始没有想到使用-p参数呢,原因有二:
- 以前使用nginx或openresty时,都是从笔记里复制命令,所以没出过错,但也不明白命令的含义。
- 书上说-p参数用来指定"nginx的安装目录",我没太看明白,以为真的是指nginx的安装目录,就没去管。但后来看了看文档明白了,文档是这么说的:"
set nginx path prefix, i.e. a directory that will keep server files (default value is /usr/local/nginx).
",大概就是说-p用来指定一个目录,这个目录是用来存放服务器文件的,我的理解就是项目的根目录了。还是看文档准确性更高呀!
也可能是因为项目目录通常就是nginx的安装路径?所以书上说-p指定的是nginx安装路径?我不清楚。
第五步--其它命令
- 重载配置:sudo nginx -p `pwd` -c config/nginx.conf -s reload
- 优雅退出:sudo nginx -p `pwd` -c config/nginx.conf -s quit
最后放上学习nginx的3个地方: