一、是什么
Nginx是一个高性能的HTTP和反向代理的Web服务器,外围特点是占用内存少,并发能力强。
二、利用场景
HTTP服务器
- 高并发(5W并发连贯),高负载,自身低功耗
- 反向代理服务器
- 负载平衡服务器
- 动静拆散
三、特点
- 跨平台 -> 大多数类Unix零碎,以及Windows
- 上手容易
- 高并发、性能好
- 稳定性好
四、反向代理
1. 正向代理
申请 -> 代理服务器 -> 指标服务器 ,返回的时候原路返回
2. 反向代理
申请 -> Nginx(裸露的ip及端口) -> 实在解决的服务的ip(暗藏)
Nginx反向代理到实在服务提供者,依据负载平衡策略,用户只能看到反向代理服务器Nginx的端口及ip。
五、负载平衡
当申请到来时,调配哪个服务解决申请的过程。为了解决服务高负载的问题。
1. 策略: 轮训(默认)
upstream Servers { server ip:port; server ip:port;}location /path/ { proxy_pass http://Servers/;}
2. 策略: 权重
# 权重越高被调配申请越多upstream Servers { server ip:port weight=1; server ip:port weight=2;}
3. 基于ip的hash
# 每个申请依照ip的hash调配后果,批准客户端的申请会分到同一服务提供者,能够解决session问题。upstream Servers { ip_hash; server ip:port; server ip:port;}
六、动静拆散
- 动态资源:html,js,icon等文件交由Nginx路由
动静资源:Servlet,接口 交由服务的Tomcat
# 动态资源location /static/ { root /app/static/ # 动态资源目录}
七、命令
./nginx #启动./nginx -s stop./nginx -s reload #从新加载配置文件
八、内存模型
- Master过程用于管制woker过程
- worker过程真正负责工作,独立互不影响
九、配置
# 所有配置以 ; 结尾#user nobody;worker_processes 1;#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;}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; # 负载平衡 upstream Server { server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; # 监听端口 server_name localhost; #监听ip #charset koi8-r; #access_log logs/host.access.log main; location / { # / 代表默认反向代理的状况# #root html; #index index.html index.htm; # 转发到 127.0.0.1:8080 proxy_pass http://127.0.0.1:8080/; } # 依据不同门路转发 # 语法:location [ = | ~ | ~* | ^~ ] /URI { … } https://segmentfault.com/a/1190000022315733 location /path/ { #root html; #index index.html index.htm; # 转发到 127.0.0.1:8081 # proxy_pass http://127.0.0.1:8081/; # 负载平衡形式 proxy_pass http://Server/; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}