nginx-使用
配置文件
- 全局块:从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令
- events块:主要影响nginx服务器和用户的网络连接
- http块:配置最频繁的部分
- http全局块:包括文件引入、mime-type定义、日志自定义、连接超时、单连接请求数上限等
- server块:和虚拟主机有关
- 全局server块:最常见的配置是本虚拟机监听配置和虚拟主机的名称或ip配置
- location块:一个server块可以配置多个loation块。主要作用是基于nginx服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行匹配
反向代理
正向代理
如果把局域网外的internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问,这种代理称为正向代理
在客户端配置代理服务器
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器地址
配置文件
server {
listen 监听的端口号;
server_name localhost;
location / {
proxy_pass http://被代理服务IP地址:端口号;
}
}
根据路径不同访问不同服务
server {
listen 监听的端口号;
server_name localhost;
location ~ /路径1/ {
proxy_pass http://被代理服务1IP地址:端口号;
}
location ~ /路径2/ {
proxy_pass http://被代理服务2IP地址:端口号;
}
}
负载均衡
单个服务器解决不了,我们增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
配置文件
upstream myserver {
[ip_hash;]
[fair;]
server 被代理服务IP地址:端口号 [weight=权重]
......
}
server {
listen 监听的端口号;
server_name localhost;
location / {
proxy_pass http://myserver;
}
}
分配策略
- 轮询(默认):每个请求按时间顺序逐一分配到不同服务器,如果服务器宕掉,会自动剔除
- weight:权重,默认为1,权重越高,被分配的请求就越多
- ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器可以解决session问题
- fair(第三方):按服务器的响应时间来分配,响应短的优先
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力
配置文件
server {
listen 监听的端口号;
server_name localhost;
#静态资源
location /路径/ {
root 资源路径;
autoindex on; #列出文件夹中的内容
expires 过期时间; #过期时间内资源未发生改动,返回304
}
# 动态资源
location /路径/ {
proxy_pass http://被代理服务IP地址:端口号;
}
}
常用命令
命令 | 作用 |
---|---|
nginx -v | 查看版本号 |
nginx | 启动 |
nginx -s stop | 停止 |
nginx -s reload | 重新加载配置文件 |
nginx -t | 检查配置文件语法 |
原理
一个nginx由一个master进程或一个或多个worker线程组成
master负责管理和监控worker,worker负责具体的操作
客户端发送请求给master,master让worker去争抢请求,抢到的worker进行操作
好处
- 可以使用nginx -s reload进行热部署
- 每个worker都是独立的进程,如果有一个worker出现问题,其它worker还可以继续争抢,不会出现服务中断