1,基础理论
Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现好。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
1.1,正向代理
用户端设置代理服务器。
所有的请求都由代理服务器发出,无法判断代理了多少用户端,叫正向代理。
正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。
例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。
1.2,反向代理
反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
1.3 负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们说的负载均衡。
1.4 动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
2,配置路径和基础命令
在执行./configure 时如何不指定使用配置,默认是在/usr/local/nginx/conf下的nginx.conf。
基础命令:
执行命令前需要先进入cd /usr/local/nginx/sbin目录
查看Nginx版本号
./nginx -v
启动Nginx
./nginx
关闭Nginx
./nginx -s stop
重启Nginx
./nginx -s reopen
优雅停止Nginx(nginx 执行完正在进行的进程才会关机)
./nginx -s quit
重新加载Nginx配置文件
./nginx -s reload
测试配置文件是否正确
./nginx -t
3, 配置
Nginx配置含义
1,events:配置影响 nginx 服务器或与用户的网络连接;
2,http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
3,server:配置虚拟主机的相关参数,一个 http 中可以有多个 server;
4,location:配置请求的路由,以及各种页面的处理情况;
5,upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。
实例讲解:
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;
server_name 192.168.71.167; # 提供服务的域名主机名(客户端通过这个IP可以请求到当前nginx)
location / { # 第一个location区块开始
root html; # 站点的根目录,相当于Nginx的安装目录
#添加下面的一句话 代理到当前机器的8080服务器
proxy_pass http://127.0.0.1:8080;
index index.html index.htm; # 默认的首页文件,多个用空格分开
} # 第一个location区块结果
error_page 500 502 503 504 /50x.html; # 出现对应的http状态码时,使用50x.html回应客户
location = /50x.html { # location区块开始,访问50x.html
root html; # 指定对应的站点目录为html
}
}
}
以上是一个基础的配置。
测试:
http://192.168.71.167/
这个请求会代理到当前机器的8080端口,也就是http://127.0.0.1:8080。这是一个典型的反向代理。
负载均衡的配置:
1 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2 weight
weight代表权重,默认为1,权重越高被分配的客户端越多。
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3 ip_hash
每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,示例如下:
upstream myserver{
ip_hash;
server 192.168.71.167:8080 weight=1;
server 192.168.71.167:8081 weight=1;
}
4 fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver{
fair;
server 192.168.71.167:8080 weight=1;
server 192.168.71.167:8081 weight=1;
}
动静分离配置
准备工作,创建几个文件目录,目录中放一下资源
mkdir /data
cd /data
mkdir www
#在www文件夹里放个a.html
mkdir image
#在image文件夹里放个1.jpg
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 192.168.71.167;
location /www/ {
root /data/;
index index.html index.htm;
}
location /image/ {
root /data/;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
测试:
访问图片: http://ip/image/1.jpg
访问页面: http://ip/www/a.html
访问目录: http://ip/image/(因为设置了autoindex on;)
以上大致上是一些基础的配置
版权归原作者 湘人-汤义 所有, 如有侵权,请联系我们删除。