文章目录
- Nginx的发行版本
- Nginx的编译安装(ubuntu18.04)
- Nginx相关操作
- Nginx启动停止命令
- 安装Nginx为系统服务
- Nginx的目录结构与基本原理
- 目录结构:
- 基本运行原理:
- 基础配置:
- 核心配置
Nginx的发行版本
- Nginx开源版:http://nginx.org/
比较干净,主要就完成了网站服务器、代理服务器、负载均衡服务器。没有其他额外的功能。 - Nginx plus商业版:https://www.nginx.com
由F5官方出品,在原有nginx上增加了很多使用的功能。 - Openresty:http://openresty.org/
nginx+lua进行了完美整合。 - Tengine:http://tengine.taobao.org/
Nginx的编译安装(ubuntu18.04)
-
下载源码 http://nginx.org/download/nginx-1.22.1.tar.gz
解压tar包
tar -zxvf nginx-1.22.1.tar.gz
-
进入解压后的目录:
cd nginx-1.22.1
-
安装所需依赖库:
sudo apt install gcc sudo apt-get install libpcre3-dev sudo apt install zlib1g-dev
-
sudo ./configure --prefix=/usr/local/nginx
显示下列信息表示成功
-
编译:
sudo make sudo make install
-
启动服务:
cd /usr/local/nginx/sbin sudo ./nginx
如果启动报错
说明80端口被占用
解决办法:sudo netstat -natp| grep 80 // 找到占用80端口的进程 sudo killall -9 xxx // 杀掉该进程 或者 sudo service xxx stop // 停止占用80端口的服务
再次启动nginx
在浏览器输入ip,若访问超时:
systemctl stop firewalled.service // 关闭防火墙 或者 firewall -cmd --zone=public --add-port=80/tcp --permanent // 防火墙放行80端口(nginx默认是占用80端口)
-
浏览器输入ip地址访问:显示如下表示成功
Nginx相关操作
Nginx启动停止命令
sudo ./nginx // 启动
sudo ./nginx -s stop // 停止
sudo ./nginx -s quit // 优雅关闭,在退出之前完成已经接收的请求任务
sudo ./nginx -s reload // 重新加载配置文件
安装Nginx为系统服务
对于初次安装Nginx的Linux系统来说是不支持 service 和 systemctl 命令启动的
如下操作可以使 service 和 systemctl 命令来操作nginx的启动停止
vi /usr/lib/systemd/system/nginx.service // 没有system目录可以创建一个
systemctl daemon-reload // 重新加载系统服务
// 输入内容如下,注意安装路径不是/usr/local/nginx的话需要修改成对应的路径
[Unit]
Description=nginx web service
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的目录结构与基本原理
目录结构:
基本运行原理:
nginx启动时会启动主进程,负责读取配置文件并做校验,校验成功后会fork()多个子进程,此后主进程主要的工作就是协调子进程进行工作。
当一个用户请求进来后,首先由worker子进程解析这一次请求(因为子进程是知道配置文件的内容的,所以子进程可以判断该请求的资源是否存在)发现请求是想获取index.html文件,然后做出响应。
基础配置:
核心配置
nginx.conf文件中的配置:(启动nginx需要的最少配置)
- worker_processes 1;// 配置在启动nginx的时候需要启动多少个worker子进程。这主要取决于服务器硬件的牛皮程度,硬件不行配置参数高了效率反而会变低。基本配置逻辑主要还是一个CPU内核对应一个worker_processes
- events { worker_connections 1024; } // 事件驱动模块,worker_connections配置每一个worker_processes可以创建多少个连接。
- http{…}:
- include mime.types; // 配置include引用其他配置文件。(mime.types,根据后缀名配置文件的类型,比如照片文件、文本文件还是什么类型都在mime.types文件中配置。 注意: mime.types文件配置的类型是返回给客户端让客户端去解析的)
- default_type application/octet-stream; // 默认文件类型。mime.types文件总不能把所有文件类型都配置上,总会出现没见过的后缀,此时就返回这个默认文件类型让客户端去解析。
- sendfile on; // 数据零拷贝。(后续详细理解)
- keepalive_timeout 65; // 保持连接超时的时间。
- server{…}:一个server模块表示一个主机
- listen 80; // 指监听的端口号。
- server_name localhost; // 当前这台主机的主机名,这个字段还可以配置域名。
- location{…} // URI 资源定位所需要的所有信息。一个主机可以配置多个location。
- root html; // 跟nginx/html文件夹是一一对应的。
- index index.html index.htm;// 默认页。
- error_page 500 502 503 504 /50x.html;// 当出现错误码为配置的内容时就跳转到50x.html
- location = 50x.html {root html}:报错文件找不到的时候,将定位到html文件夹去找50x.html
nginx.conf有上述配置即可启动