web开发之旅(二):Nginx基本教程

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地址也可以。
web开发之旅(二):Nginx基本教程_第1张图片

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 -tsudo 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框架和处理流程如下:
web开发之旅(二):Nginx基本教程_第2张图片

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

你可能感兴趣的:(Web开发)