1 nginx安装与运行
1.1 安装依赖
-
PCRE:
sudo apt-get install libpcre3 libpcre3-dev
,编译nginx所需的pcre-devel是用PCRE开发的配置文件nginx.conf中使用正则表达式需要PCRE支持 -
zlib:
sudo apt-get install zlib1g-dev
,若在nginx.conf中配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量,则在编译时就必须把zlib编译进nginx -
OpenSSL:
sudo apt-get install openssl libssl-dev
,若nginx启用HTTPS 或 想使用MD5SHA1等散列函数则需要OpenSSL
1.2 安装nginx
sudo apt install nginx
以上为Ubuntu安装流程,Centos安装nginx步骤参考https://www.nginx.cn/install
文件结构大致为:
- 配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
- 程序文件在/usr/sbin/nginx
- 日志放在了/var/log/nginx中
- 并已经在/etc/init.d/下创建了启动脚本nginx
- 默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)
1.3 运行
sudo nginx
sudo /etc/init.d/nginx start
systemctl start nginx.service
打开浏览器访问机器的IP,若如下图,则安装成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83PTkVYA-1601367951004)(nginx.assets/54a2a47d0001528105000169.jpg)]
1.4 停止
-
nginx -s stop
立即停止nginx -
nginx -s quit
进程完成当前工作后再停止。 -
killall nginx
直接杀死进程, -
systemctl stop nginx.service
其他常用命令
-
重启
systemctl restart nginx.service
-
重新载入配置文件
nginx -s reload
-
查看端口号
netstat -tlnp
2 nginx架构
2.1 两种进程
如上图,Nginx有两种进程,一个master进程,一种是worker进程。nginx启动时,会生成两种类型的进程,一个是主进程(Master),一个(windows版本的目前只有一个)或者多个工作进程(Worker)。
主进程不处理网络请求,主要负责调度工作进程,也就是图示的三项:加载配置、启动工作进程及非停升级。服务器实际处理网络请求及响应的是工作进程(worker)。
2.2 模块化设计
nginx的worker,包括核心和功能性模块,核心模块负责维持一个运行循环(run-loop),执行网络请求处理的不同阶段的模块功能,如网络读写、存储读写、内容传输、外出过滤,以及将请求发往上游服务器等。
2.3 反向代理
代理也被称为正向代理,是一个位于客户端和目标服务器之间的代理服务器,客户端将发送的请求和制定的目标服务器都提交给代理服务器,然后代理服务器向目标服务器发起请求,并将获得的结果返回给客户端的过程
反向代理的对象就是服务器,即代理服务代理的时服务器而不是客户端,它的作用现在是代替服务器接受请求,而不在像正向代理那样代理客户端。反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
3 常用配置
注:Ubuntu下配置文件路径/etc/nginx/nginx.conf
3.1 简单配置
nginx配置文件里面是由一个个配置块组成(配置块名称 {}),注:配置块的名称和左大括号之间要有空格。
例: 转载
worker_processes 1;
envents {
work_connections 1024;
}
http {
include mine.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server{
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
1 worker_processes 属性表示的是worker进程的进程数
2 events 表示对事件的配置
2.1 events中worker_connections的含义是最大链接数
3 http表示对http请求的配置
3.1 http中的include属性表示引入的意思,示例中表示nginx的配置文件引入了mime.types文件
3.2 default_type表示请求响应的默认数据类型
3.3 sendfile属性值为on表示启用sendfile,sendfile的作用是在底层拷贝数据的时候可以跳过应用,直接从内核拷贝到网卡,加快速度
3.4 keepalive_timeout表示长连接的一个保活时间,一个连接请求完并不是立马销毁,通过这个属性可以等一段时间,以便下次有请求继续用
3.5 server 配置块代表配置一个虚拟机,用来启动并响应
3.5.1 server中的listen属性表示监听的端口,不能和其它重复
3.5.2 server中server_name用来配置域名,分发请求的时候会根据访问的域名和配置的域名的对应关系分发
3.5.3 server中location表示其中一个请求的地址 后面可以加斜杠、等于号等正则表达式方式匹配,其中的内容是对应的链接和页面,root表示页面所在目录