这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。
nginx笔记
nginx介绍
nginx担当高性能的web服务器负载均衡器,流量网关,日志网关,日志服务器,贯穿了整个项目
- nginx开源版本比较干净,就是一个负载均衡和高性能服务器--开源
- nginx-plus东西更多,是nginx升级版本
- 将nginx和Lua脚本进行整合--开源
- 更安全,更稳定,性能更高--开源
虚拟机的安装
- 准备软件:
- Vmware
- Virtualbox
- Parallels
- 准备镜像
- Centos7.4镜像
- 安装与配置操作系统
-
配置虚拟机上网 先配置网卡,修改配置文件
-
2. 配置静态ip地址
- 配置静态的ip地址,否则虚拟机会随即生成ip地址,每次连接比较麻烦
Nginx开源版本的安装
- 首先进行解压缩nginx的tar包
- 解压完之后进入目录用编译安装的方式进行安装,用configure配置进行安装,如图,他缺少c语言编译
- 随即安装gcc
- 安装nginx,挑选位置进行安装
yum install -y gcc
- 发现缺少库,随即安装perl库
yum install -y pcre pcre-devel
- 发现缺少zlib库,安装zlib库
yum install -y zlib zlib-devel
- 接下来执行:make , makei nstall
启动Nginx
- 安装成功之后进入安装好的目录** /usr/local/nginx/sbin**
- 启动nginx
./nginx
- 快速停止nginx
./nginx -s stop
- 优雅关闭nginx,在退出前完成已经接受的连接请求
./nginx -s quit
- 重新加载配置nginx
./nginx-s reload
- 进入目录之后输入 ./nginx启动nginx之后可以在浏览器输入ip地址,发现进不去,这时候是防火墙的问题
关于防火墙
- 关闭防火墙
systemctl stop firewalld.service
- 禁止防火墙开机启动
systemctl disable firewalld.service
- 放行端口
firewalld-cmd --zone=public --add-port=80/tcp --permanent
- 查看防火墙状态
systemctl status firewalld
- 重启防火墙
firewall-cmd --reload
- 我们关闭防火墙
随后能进去网页
- 随后关闭开机自启防火墙
安装系统服务
- 因为我们每次都得自启动太麻烦,所以可以写一个脚本
- 创建脚本服务
vi /usr/lib/systemd/system/nginx.service
- 服务脚本内容---注意脚本中的路径
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 先关闭之前的nginx服务
- 重新加载系统服务
systemctl daemon-reload
- 通过脚本启动nginx: systemctl start nginx
- 查看nginx状态: systemctl status nginx
- 开机启动
systemctl enable nginx.service
- reboot关机,在启动试一下nginx是否自启动
目录结构与基本运行原理
- 目录
- sbin中放的是启动nginx的主程序
- html中的index.html是加载的默认页面
- 50x.html是报错后的页面
- logs是记录日志的
- access.log记录访问日志,记录访问时间,请求具体文件,等等,所以这个日志可能会很大,达到一定程度会报错.
- error.log记录错误日志
- nginx.pid记录着893就是nginx的进程pid
-
更改默认页
就是更改index.html
-
基本运行原理
客户端发起一个请求,nginx端主目录下/sbin有个nginx可执行文件,将这个文件跑起来,会开启master的主的进程,在主进程中读取配置文件并且再次做一个校验,然后开启子进程worker,主进程不处理业务,子进程解析请求
Nginx基础配置 (最重要的内容)
- 最小配置文件
- 位置: /usr/local/nginx/conf/nginx.conf
- nginx配置文件大量的注释文件,去掉注释文件之后的简化conf
- 核心配置
- 虚拟主机配置
#工作的子进程个数,一个cpu内核对应一个进程
worker_processes 1;
events {
//每一个worker进程对应的连接数
worker_connections 1024;
}
#核心配置
http {
#引用其他的配置文件mime.types到主配置文件里,记录所有mime的type,mime的type就是请求的头,头里面记录着返回或者发送的文件是什么类型
include mime.types;
#如果mime.types里面没有对应的类型,哪么就用默认流形式
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#虚拟主机,每一个主机之间互相不干扰
server {
#监听80端口
listen 80;
server_name localhost; #域名,主机名
#http://lsj.cash/xxoo/index.html,location是匹配域名后面的资源 /xxoo/index.html
location / {
#相对路径
root html;
index index.html index.htm;
}
#http://lsj.cash/50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}