一、什么是nginx?
nginx是一款高性能的http服务器/反向代理服务器
二、反向代理服务器有哪几种?
ngin、lvs、F5(硬件)、haproxy
三、nginx应用场景
1、http服务器:nginx服务器是一个http服务器可以独立提供服务,可以用作网页静态服务器
2、虚拟主机:可以实现一台服务器虚拟出多个网站
3、反向代理:负载均衡,当网站访问量达到一定程度,单台服务器不能满足用户需求时,需要多台服务器集群使用nginx做反向代理,多台服务器平均分摊负载,减轻服务器压力。反向代理(不暴露真实服务器ip地址)
nginx的优点:性能好、占内存小、轻量级服务器、同一时刻能抗住5w并发量
nginx配置文件
#user nobody;
worker_processes 1; #工作进程数,一般设置成cpu核心数
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; #最大连接数,一般设置成cpu*2048
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; #客户端连接超时时间
#gzip on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6].";
server_names_hash_bucket_size 128; #当配置多个server节点时,默认server names的缓存区大小就不够用,需要啥手动设置大一点
client_max_body_size 100m;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
proxy_set_header Host $host:$server_port;
proxy_set_header X-real-ip $remote_addr;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#使用upstream 开启负载均衡
#upstream backserver {
#server 127.0.0.1:8080;
#server 127.0.0.1:8081;
#server 127.0.0.1:8082 down; #down表示当前server暂不参与负载均衡
#server 127.0.0.1:8083 backup; #其它所有非backup机器down或者忙的时候,请求backup,所以这台机器压力最小
#server 127.0.0.1:8083 weight; #weight表示权重,weight越大,权重越大
#}
#server 理解为一个站点
#server {
#listen 80; #站点监听端口
#server_name www.yang.com; #站点访问域名
#location / { #用来匹配同一域名下多个url的访问规则
#proxy_pass http://backserver;
#index index.html index.htm;
#}
#}
server {
listen 80;
server_name 8081.www.yang.com;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
server {
listen 8088;
server_name www.yang.com;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
# HTTPS server
#
#server {
# listen 1443 ssl;
# server_name www.gacfcavlearning.com;
#
# ssl_certificate 1_www.gacfcavlearning.com_bundle.crt;
# ssl_certificate_key 2_www.gacfcavlearning.com.key;
#
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
#
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# location / {
# proxy_pass http://127.0.0.1:8080;
# }
# location /wechat/ {
# proxy_pass http://127.0.0.1:8081;
# }
# location /new/ {
# proxy_pass http://127.0.0.1:8081;
# }
#
#
#}
include servers/*;
}
四、nginx的算法
轮训机制、权重、ip绑定ip_hash、fair(第三方)、url_fair(第三方)
五、nginx实现反向代理
server {
listen 80;
server_name 8081.www.yang.com; //域名
location / {
proxy_pass http://127.0.0.1:8081; //真实访问路径
}
}
1、hosts文件配置域名(C盘-windows-system32-drivers-etc-hosts)
2、nginx.conf
访问路径失败
访问成功
六、nginx实现负载均衡
负载均衡:建立在网络结构之上、它提供了一种廉价有效透明的方法,扩展网络设备和服务器的宽带、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性、
1、轮询机制
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、ip绑定ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端断服务器、可以解决session的问题
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}