2、nginx使用
Nginx使用
目录
[toc]
简介
Nginx 是非常重要的负载均衡中间件,被广泛应用于大型网站架构,下面我就全面来详解 。
Nginx 是一款轻量级的高性能的 Web 服务器和反向代理服务器,是由俄罗斯的程序设计师 Igor Sysoev 所开发。
Nginx 处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性;
在高连接并发的情况下,Nginx是Apache服务器不错的替代品,目前Web服务器调查显示Apache下降Ngnix攀升,linux下更多的服务商选择了Ngnix放弃了Apache;
Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue作为开发模型.
目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。
而Nginx专门为性能优化而开发,性能是最重要的考量,非常注重效率,Nginx能够支持高达50000个并发连接响应数。特点
由于以下这几点,所以使用 Nginx 非常火,在互联网项目中广泛应用。
-
相较于 Apache 具有占有内存少、稳定性高、并发能力强等优势;
-
Nginx 使用基于事件驱动架构,使得其可以支持**数以百万级别的 TCP 连接**;
-
高度的模块化、扩展性好、和自由软件许可证、使得第三方模块层出不穷;
-
Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、Mac OS 等操作系统上。
功能应用
1. 正向代理
正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。
例如:在大陆访问 www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。
来看个示意图:
我们可以通过这种方式,访问原来无法访问的资源,比如:Google。
2. 反向代理
反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。
来看个示意图:
由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
3. 负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。
来个示意图:
将用户访问的请求, 根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡。
4. 动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
来个示意图:
下载
1.Nginx 官网下载
Nginx 下载地址:https://nginx.org/en/download.html
2. 下载稳定版
如下图所示:
然后再把 Nginx 的下载包,上传 Linux 服务器。
命令
Nginx 常用命令:
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload #因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t #不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v #显示 nginx 的版本。
service nginx restart #重启 Nginx 服务
nginx -V 显示 nginx 的版本,编译器版本和配置参数。
Nginx 配置 🐱👓
目录结构
目录Nginx 配置文件所在位置:nginx/conf/nginx.conf
。
目录结构
├── conf ## Nginx所有配置文件的目录
│ ├── fastcgi.conf ## fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default ## fastcgi.conf的原始备份文件
│ ├── fastcgi_params ## fastcgi的参数文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types ## 媒体类型
│ ├── mime.types.default
│ ├── nginx.conf ## Nginx主配置文件 (常用)
│ ├── nginx.conf.default
│ ├── scgi_params ## scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params ## uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp ## fastcgi临时数据目录
├── html ## Nginx默认站点目录
│ ├── 50x.html ## 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
│ └── index.html ## 默认的首页文件 (常用)
├── logs ## Nginx日志目录
│ ├── access.log ## 访问日志文件
│ ├── error.log ## 错误日志文件
│ └── nginx.pid ## pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp ## 临时目录
├── sbin ## Nginx命令目录
│ └── nginx ## Nginx的启动命令
├── scgi_temp ## 临时目录
└── uwsgi_temp ## 临时目录
Nginx 配置结构
main ## 全局配置,对全局生效
├── events ## 配置影响 nginx 服务器或与用户的网络连接
├── http ## 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
│ ├── upstream ## 配置后端服务器具体地址,负载均衡配置不可或缺的部分
│ ├── server ## 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
│ ├── server
│ │ ├── location ## server 块可以包含多个 location 块,location 指令用于匹配 uri
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
Nginx 配置含义
-
**全局块 main:**nginx 的全局配置,对全局生效;
-
**events:**配置影响 nginx 服务器或与用户的网络连接;
-
**http:**可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
-
**server:**配置虚拟主机的相关参数,一个 http 中可以有多个 server;
-
**location:**配置请求的路由,以及各种页面的处理情况;
-
**upstream:**配置后端服务器具体地址,负载均衡配置不可或缺的部分。
Nginx 配置文件
worker_processes 1;## worker进程的数量
events { ## 事件区块开始
worker_connections 1024;## 每个worker进程支持的最大连接数
} ## 事件区块结束
http { ## HTTP区块开始
include mime.types;## Nginx支持的媒体类型库文件
default_type application/octet-stream;## 默认的媒体类型
sendfile on;## 开启高效传输模式
keepalive_timeout 65;## 连接超时
server { ## 第一个Server区块开始,表示一个独立的虚拟主机站点
listen 80;## 提供服务的端口,默认80
server_name localhost;## 提供服务的域名主机名
location / { ## 第一个location区块开始
root html;## 站点的根目录,相当于Nginx的安装目录
index index.html index.htm;## 默认的首页文件,多个用空格分开
}
## 第一个location区块结束
error_page 500502503504 /50x.html;## 出现对应的http状态码时,使用50x.html回应客户
location = /50x.html { ## location区块开始,访问50x.html
root html;## 指定对应的站点目录为html
}
}