Nginx介绍
服务器分类: Nginx、Apache、tomcat、Micorsoft Server
ng是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,超越Apache的高性能和稳定性.
$ sudo /usr/local/Cellar/nginx/1.15.3/bin/nginx // 本地启动 9080
四层和七层负载均衡
负载均衡设备也被称为"四到七层交换机",四层就是基于IP+端口的负载均衡,七层就是基于URL等应用信息的负载均衡.
如果只做HTTP的负载均衡,用haproxy好了。性能很强
七层负载均衡优点:
1、高并发连接: 支撑5万并发连接
2、内存消耗少: 在3万并发连接,开启10个Nginx进程消耗150M内存
3、配置文件简单
4、节省带宽: 支持GZIP压缩,可以添加浏览器本地缓存的Header头,
5、稳定性高: 用于反向代理, 宕机概率小
6、支持热部署: 不间断服务进行更新
Nginx原理
一、七层负载均衡优势:
1、对HTTP报头检查,可以检出状态码为400、500、600的错误信息,如果有错误将连接请求重新定向到另一台服务器
2、可以根据数据类型(判断数据包是图像、压缩文件、或多媒体文件等),将数据引向内容服务器
3、根据请求类型,将普通文本、图象等静态文档,或是动态文档请求,引向相应的服务器来处理
二、Nginx负载均衡是基于内容和应用的七层资的,Nginx抗并发强,是因为Nginx使用了非阻塞、异步传输
三、模块
1、nginx负载均衡模块
配置负载均衡是ngx_http_upstream_module,这模块是默认安装
2、代理模块
Proxy为nginx的代理模块, 允许将用户的HTTP请求转发到后端服务器
四、反向代理
反向代理是指以代理服务器接受internet上的连接请求,将请求转发给内部服务器,并将从服务器得到结果返回给internet的客户端
Nginx负载均衡调试策略
ng的upstream目前支付几种分配:
1、轮询: 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务down掉,能自动剔除
2、weight: 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、ip_hash: 每个请求按访问ip的hash结果分配,每个访客访问一个固定的后端服务器
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
}
4、fair(第三方)
5、url_hash(第三方)
upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
通过brew安装nginx
$ brew install nginx
cd /usr/local/etc/nginx/ // nginx.conf 配置目录
open /usr/local/Cellar/nginx // 其实这个才是nginx被安装到的目录
$ cd /usr/local/var/www // 进入到目录 localhost:9080
$ nginx // 启动服务
重启ng:
ps -ef|grep nginx
kill -9 进程号
Nginx安装和删除
主要步骤: 下载包,压缩、配置编译
$ https://nginx.org/en/download.html 下载一个nginx包版本
$ cd /usr/local/ && mkdir newNginx // 进入到local目录并创建一个newNginx目录
$ 将下载的包copy到新创建的newNginx目录, 并将包解压到当前目录 tar zxf nginx-1.12.2.tar.gz
$ cd nginx-1.12.2
$ ./configure // 验证过程
$ make
$ make install // 这时候会创建一个nginx目录 /usr/local/nginx
$ 将newNginx目录的文件copy到nginx目录
Nginx配置文件
默认该配置文件被命名nginx.conf
配置server
server {
listen 9092; // 端口
root /Users/apple/siguang.liu/Hh/hh_h5; // 指定根目录
location / {
proxy_pass http://174.16.1.82:8080/; // 代理到的服务器
}
error_page 500 502 503 504 /50x.html; // 错误
location = /50x.html {
root html;
}
location ^~ /api {
proxy_pass http://172.16.1.82:8080/; // 如果访问以"/api"开头的代理的服务器
}
location ~ \.(gif|jpg|png|js|css|html|map)$ { // 指定静态资源
root /Users/apple/siguang.liu/Hh/hh_h5;
}
}
可以通过include来将另一个文件的内容引用
include servers/*.conf;
一、所存在的目录 /usr/local/nginx/conf // 本机mac /usr/local/openresty/nginx
二、启动 sudo /usr/local/openresty/nginx/sbin/nginx // 需要sudo管理员权限
三、启动后的可以通过调用带-s参数来执行文件来控制
$ nginx -s 命令
1、reload - 重启 sudo /usr/local/openresty/nginx/sbin/nginx -s reload
2、stop - 快速关机 sudo /usr/local/openresty/nginx/sbin/nginx -s stop
3、quit - 优雅关机 sudo /usr/local/openresty/nginx/sbin/nginx -s quit
4、reopen - 重新打开日志文件 sudo /usr/local/openresty/nginx/sbin/nginx -s reopen
四、查看、杀掉进程
$ ps -ex | grep nginx
$ kill -s quit 1682
五、配置文件结构
指令分为简单指令和块指令,以空格分隔,以分号(;)结束
四、注释使用 #
# HTTPS server
#
# server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# }
Nginx配置 HTTP2.0
https://www.nginx.com/blog/nginx-1-9-5/
| https://www.cnblogs.com/meng1314-shuai/p/8335140.html // 安装Ng
| http://www.cnblogs.com/felixzh/category/937300.html
| https://www.cnblogs.com/felixzh/p/6283788.html
| https://www.cnblogs.com/taiyonghai/p/6728707.html