Nginx简介
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。Ngin成为Web服务器的不二之选,是学习Web开发的必学知识。
Nginx安装
sudo apt-get install nginx
当提示缺少效应的文件时,可以一个个安装或者用sudo apt-get install -f
安装难度很小,一般不会出现什么深坑。
安装好的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
其实从上面的根目录文件夹可以知道,Linux系统的配置文件一般放在/etc,日志一般放在/var/log,运行的程序一般放在/usr/sbin或者/usr/bin。
当然,如果要更清楚Nginx的配置项放在什么地方,可以打开/etc/nginx/nginx.conf
我猜测,Nginx如果指定默认加载/etc/nginx/nginx.conf的配置文件。如果要查看加载的是哪个配置文件,可以用这个命令sudo nginx -t或者ps -ef | grep nginx
Nginx 启动
可以通过sudo Nginx
或者sudo service Nginx
来启动装好的Nginx,这时会启动默认的设置。
通过打开浏览器,输入网址127.0.0.1得到下面的欢迎画面,及证明Nginx安装启动成功了。如果127.0.0.1不行,就输入localhost,当然输入本机IP地址也可以。
Nginx 常用命令
常用的Nginx命令如下:
sudo nginx # 启动Nginx
sudo nginx -t # 测试配置文件是否有错误
sudo nginx -v # 查看Nginx版本
sudo nginx -V # 查看Nginx版本和编译安装时的编译参数
sudo nginx -s stop # 强制停止Nginx服务
sudo nginx -s quit # 优雅地停止Nginx服务(即处理完所有请求后再停止服务)
sudo nginx -s reload # 重新加载Nginx配置文件,然后以优雅的方式重启Nginx
多家联系和使用,其中sudo nginx -t
和sudo nginx -s reload
较为实用和多用。
Nginx框架简述
先简单介绍一下对比产品Apache框架,Apache框架采用多线程方式处理Web系统中多并发请求,每一个请求分配一个线程,请求结束后结束线程释放资源。这样做的缺点是如果有请求阻塞,则造成资源浪费,CPU利用率低,线程上下文切换资源消耗大等问题。因此Apache框架的多并发性能相对降低。
Nginx则采用多进程多线程模型来处理并发请求。Nginx 在启动后,会有一个 master 进程和多个 worker 进程。master 进程主要用来管理 worker 进程,包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动重新启动新的 worker 进程。而基本的网络事件,则是放在 worker 进程中来处理了。多个 worker 进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。当一个请求分到了一个worker进程中,该worker进程会创建一个线程来处理该请求,从而实现使用多线程来处理并发请求的功能。其中worker 进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与 Nginx 的进程模型以及事件处理模型是分不开的,与操作系统原理一致。多线程处理则效率更高,同时上下文切换成本更低,并发效率非常高,Nginx框架和处理流程如下:
Nginx 配置简单介绍
http {
server {
listen 80;
server_name 0.0.0.1;
location / {
index index.html;
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
}
}
http表示处理的协议是http协议, listen表示端口,80端口http的默认端口,server_name是目标地址(可以使域名也可以是IP),location这是对应的HTML或者URL资源。 include uwsgi_params 指用了uswgi协议,然后协议的地址是 127.0.0.1:3031(也可以是socke文件之类的)。Nginx的配置是大学问,里面有很多知识需要学习。个人建议是在官网看官方文档,如果想掌握Nginx,对Nginx框架熟悉、独立运营等,官方文档的阅读少不了。
参考文献
http://nginx.org/
http://wiki.jikexueyuan.com/project/nginx/configuration-system.html
https://github.com/jaywcjlove/nginx-tutorial#%E6%9D%83%E9%87%8D
https://www.cnblogs.com/jingmoxukong/p/5945200.html