一、是什么

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;        }    }}