nginx 入门
首先了解一下两个概念:正向代理、反向代理
正向代理:你的电脑访问的时候,你要去哪台服务器,FQ的时候,vpn(就是正向代理的过程)去告诉你应该访问那台服务器。
反向代理:你访问到服务器之后,这个服务器再分发,分发到不同的服务器或者端口,这个就是反向代理
nginx 现在用的最多的就是反向代理。
nginx 是什么?
ngnix 就是处于缓存、负载均衡、代理的中间服务。可以做静态服务器,也可以做代理分发功能。
附上一张apache和ngnix对比图:
看起来nginx更好。所以很多会选择nginx。
使用nginx,其实nginx就是个配置生成服务器的,nginx就是个静态语音,是一个包,通过编译,编译完生成一个应用程序,就可以跑起来啦,
nginx版本在<=1.9.11的时候,·完全是一个静态语言,每改一些东西的时候,就需要重新编译,重新运行,担当>1.9.11就可以动态加载,如果你有新模块,就不需要重新编译,直接通过语法,新增一些包。
新功能:线程池(预先生成线程池来处理任务),nginx模块丰富可以支持http2(通过配置文件)等。
nginx的生态系统:
附图:
推荐使用tengine,很快
nginx入门:
linux环境下编译命令:
make命令就是编译;
make install 安装;
nginx启动之后,可以使用的以下命令控制:
nginx -S
-s 意思是向主进程发送信号,signal可以为以下四个钟的一个:
stop:快速关闭
quit::优雅关闭
reload:重新加载配置文件
reopen:重新打开日志文件
nginx 及其模块的工作方式由配置文件决定。默认情况下,配置文件名为nginx.conf,放在/usr/local/nginx/conf、/etc/nginx或者/usr/local/etc/nginx文件夹中。
常规站点配置:
nginx配置文件:
注释:
注释以#开头
指令:
eg:
worker_processes 1; 指令名 指令值
还可以是指令块:以"{"和"}"组成的区块,
eg:
http{
server{
}
}
组织和包含:
include file|mask
eg:
include mime.types
nginx内置很多变量,可以去nginx官网搜索,不需要特意记。
nginx命令:
daemon on|off //启用或者禁用守护进程模式
error_log file|stderr 等等 //配置错误日志位置及级别 很有用的,可以多了解一下。
user user [group] //设置运行ngnix进程的用户和组,如果不指定组,则其与user同名
log_not_found on|off //开启或者禁用404记录
worker_processes number|auto //定义worker进程的数量
worker_connections number //定义一个worker进程的最大连接数
区块结构:
http:为HTTP服务器提供配置上下文
server:表示开始设置的虚拟主机的配置
location:为某个请求URL(路径)建立配置
server 命令:
listen 设置web服务监听套接字的IP地址或者端口号
listen address[:port] [other]
server_name name ... //设置虚拟机的名称
location 为某个请求URI建立配置
location [ = | ~ | ~* | ^~ ] url { ... }
location @name { ... }
=修饰符 url定位必须与指定的模式精准匹配(不能使用正则表达式) 相当于写死了
无修饰符:uri必须以指定模式开始,不可以使用正则表达式
~修饰符:客户端请求的url与指定的正则表达式匹配必须区分大小写
~*修饰符:客户端请求的url与指定的正则表达式匹配,不区分大小写
^~修饰符:如果最大的前缀匹配的路径以^~开始,那么nginx不再校验检查正则表达式
@修饰符:定义命名location区段,这些区段客户端不能访问,只能又内部产生的请求访问
优先级:修饰符的优先级
eg:
学完以上命令看一下一个测试例子
nginx模块部分:
rewtite模块 :
index模块 :
Upstream模块 :
Proxy模块 :
Rwallp模块 :
Gzip模块 :