Nginx 笔记

Nginx 是高性能的 HTTP 和反向代理的 web 服务器,处理高并发能力是十分强大的,能经受高负载的考验,能支持高达 50000 个并发连接数。

一、正向代理

正向代理,代理客户端请求。比如本地无法访问外网,需要挂 VPN 才能访问外网。

二、反向代理

反向代理,代理服务器,对客户端隐藏了真实服务器的 IP 地址。对于客户端来说,反向代理服务器等于真实的服务器。

三、负载均衡

Nginx 代理多台服务器,从原来的所有请求分发到一个服务器,变成分发到多台服务器。将负载分发到多台服务器,就是负载均衡。

四、动静分离

静态资源、动态资源分开部署,Nginx 代理这两台资源服务器。

五、Nginx 常用命令

nginx -v            #查看 Nginx版本号

nginx               #启动 Nginx

nginx -s stop       #关闭 Nginx

nginx -s reload     #重新加载配置文件,不需要重启 Nginx

六、Nginx 配置

6.1 常规反向代理

#1.全局块,配置影响 Nginx 的全局参数

#运行用户
#user  nobody;

#工作进程,通常设置成和cpu的数量相等,值越大处理并发能力越强
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#2.events块,主要影响 Nginx 服务器与用户的网络连接
events {
    #use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;   #单个 woker_process 支持的最大并发连接数
}

#3.http块
http {
#3.1 http全局块
    include       mime.types;         #设定mime类型,类型由mime.type文件定义
    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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    keepalive_timeout  65;
    #开启gzip压缩
    #gzip  on;

#3.2 server块
    server {
    #3.2.1 server全局块
        listen       80; #监听端口
        server_name  xx.24.108.xx;  #代理服务名

        #定义服务器的默认网站根目录位置
        root html;

        #charset koi8-r;

        #设定本虚拟主机的访问日志
        #access_log  logs/host.access.log  main;

    #3.2.2 location块
       #默认请求
        location / {
            proxy_pass   http://17xx.24.108.xx898;  #反向代理具体的 URL 地址
            #定义首页索引文件的名称
            index  index.html index.htm;

        }

        #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 {

        }

        location = /index0.html {

        }

        #禁止访问 .html 文件
        location ~ /.html {
            deny  all;
        }
    }
}

6.2 负载均衡

#1.全局块,配置影响 Nginx 的全局参数

#运行用户
#user  nobody;

#工作进程,通常设置成和cpu的数量相等,值越大处理并发能力越强
worker_processes  1;

#2.events块,主要影响 Nginx 服务器与用户的网络连接
events {
    #use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;   #单个 woker_process 支持的最大并发连接数
}

#3.http块
http {
#3.1 http全局块
    include       mime.types;         #设定mime类型,类型由mime.type文件定义
    default_type  application/octet-stream;

    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    keepalive_timeout  65;
    #开启gzip压缩
    #gzip  on;

    #负载均衡配置
    upstream  myserver{
        #策略:默认轮询; weight; ip_hash; least_conn; fair; hash $request_uri;
        server xx.24.108.xx:9898 weight=1;
        server 17xx.24.108.xx899 weight=2;
    }

#3.2 server块
    server {
    #3.2.1 server全局块
        listen       80; #监听端口
        server_name  172.xx.24.108.xx代理服务名

        #定义服务器的默认网站根目录位置
        root html;

    #3.2.2 location块
       #默认请求
        location / {
            proxy_pass   http://myserver;  #反向代理具体的 URL 地址
            #定义首页索引文件的名称
            index  index.html index.htm;

        }

        # redirect server error pages to the static page /50x.html
        # 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {

        }

        location = /index0.html {

        }
    }
}

Nginx 负载均衡的 6 种策略:轮询(默认),weigth(权重),ip_hash(根据 IP 分配),least_conn(最少连接),fair(第三方),url_hash(第三方)。

轮询: nginx 自带策略,将每个请求按时间顺序分配到不同的后端服务器

weigth: nginx 自带策略,权重越高,被分配的次数越多。

ip_hash: nginx 自带策略,基于客户端的 IP 进行分配,确保同一个客户端的请求一直发送到相同的服务器,可以解决 session 不能跨服务器的问题。

least_conn: nginx 自带策略,把请求转发给连接数较少的后端服务器。

fair: 按照服务器端的响应时间来分配请求,响应时间短的优先分配。

url_hash: 该策略按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,需要配合缓存用。

6.3 动静分离


#1.全局块,配置影响 Nginx 的全局参数

#运行用户
#user  nobody;

#工作进程,通常设置成和cpu的数量相等,值越大处理并发能力越强
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#2.events块,主要影响 Nginx 服务器与用户的网络连接
events {
    #use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;   #单个 woker_process 支持的最大并发连接数
}

#3.http块
http {
#3.1 http全局块
    include       mime.types;         #设定mime类型,类型由mime.type文件定义
    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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    keepalive_timeout  65;
	#开启gzip压缩
    #gzip  on;

	#负载均衡配置
	#upstream  myserver{
		#策略:默认轮询; weight; ip_hash; least_conn; fair; hash $request_uri;
		#server xx.24.108.xx:9898 weight=1;
		#server 17xx.24.108.xx899 weight=2;
	#}

#3.2 server块
    server {
	#3.2.1 server全局块

	
        listen       80; #监听端口
        server_name  172.xx.24.108.xx代理服务名

		#定义服务器的默认网站根目录位置
        #root html;
		
        #charset koi8-r;

		#设定本虚拟主机的访问日志
        #access_log  logs/host.access.log  main;

    #3.2.2 location块
	   #默认请求
        location / {
			proxy_pass   http://172.24xx.24.108.xx  #反向代理具体的 URL 地址
			#定义首页索引文件的名称
            index  index.html index.htm;
        }

        #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 {

        }
	    location = /index0.html {

        }
	    location = /ii.html {
			root html;
			autoindex on;
        }
		
	    location = /www {
			root html;
			autoindex on; #是nginx开启目录浏览下载功能
        }
    }
}

posted @ 2023-05-18 17:33  little_lunatic  阅读(18)  评论(0)    收藏  举报