Nginx基础笔记

Posted 深蓝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx基础笔记相关的知识,希望对你有一定的参考价值。

一、是什么

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

}

以上是关于Nginx基础笔记的主要内容,如果未能解决你的问题,请参考以下文章

Nginx做基础负载均衡的笔记

C#学习笔记——需要注意的基础知识

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

学习笔记:python3,代码片段(2017)

unity shader学习笔记 shader基础结构以及Properties面板

[vscode]--HTML代码片段(基础版,reactvuejquery)