nginx

79 阅读3分钟

简介

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

  1. http服务器。Nginx是一个http服务可以独立提供http服务,可以做网页静态服务器。
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  3. 反向代理,很方便的实现动静分离以及负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

如果一个服务由多个服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。 可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

Untitled.png

工作原理

nginx由内核和模块组成。其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

常用命令

  1. 启动:start nginx
  2. 停止:nginx.exe -s stop/quit
  3. 重启:nginx.exe -s reload

主要配置

# ------------全局块:设置一些影响 nginx 服务器整体运行的配置指令------------
worker_processes  1; # 允许生成的进程数,默认为1
# ------------events 块:配置影响主要影响 Nginx 服务器与用户的网络连接------------
events {
    worker_connections  1024; # 每个 work process 支持的最大连接数为 1024
}
# ------------http 块------------
http {
    # ------------http 全局块:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等------------
    include       mime.types; # 文件扩展名与文件类型映射表
    default_type  application/octet-stream; # 默认文件类型,默认为text/plain
    sendfile        on; # 是否取消服务日志,这里为打开
    keepalive_timeout  65; # 连接超时时间,默认为75s,可以在http,server,location块
    client_max_body_size 100m; #控制全局nginx所有请求报文大小
    upstream mysvr { # 负均衡时配置多个服务器
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
    # ------------server 块:每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机------------
    server {
        # ------------server 全局块:最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置------------
        listen       9000; # 监听端口
        server_name  localhost; # 监听地址
	access_log  logs/fzzapp_access.log;
        error_log   logs/fzzapp_error.log;
        error_page 500 502 503 504 /50x.html
        # ------------location 块:这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。------------
        location = /error.html {
            root html;
        }
        location = /50x.html {
            root html;
        }
        location /app/index.html {
            return 404;
        }
        location / { # 请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
            root html; # 根目录
            index index.html index.html; # 设置默认页
            proxy_pass  http://mysvr; # 请求转向mysvr 定义的服务器列表
        }
        location /api {
            proxy_pass  https://fz.test.com:9977/api;
        }
        location /file {
            root /app/file; # 根目录
        }
    }
}

参考文档

# nginx工作原理与配置

# nginx安装及其配置详细教程