Nginx基本介绍及conf文件的作用


前言

本文将介绍nginx的基本概念和nginx.conf文件的构成。conf文件是利用nginx的重要入口。


一、Nginx基本介绍

1.1 what is Nginx ?

Nginx是高性能的HTTP和反向代理的web服务器,主要用途是用在网关。腾讯课堂、淘宝、163等网站均有用到。

1.2 Nginx中的三个概念

  1. 正向代理:访问端口9002的服务器,但通过代理服务器来访问(代理的是客户端)
  2. 反向代理:访问端口9002的服务器,但是可以由端口9000的服务代理分发(代理的是服务端)
  3. 负载均衡:基于反向代理,加上不同的weight来实现服务的高效分配。

image.png

1.3 nginx安装

  1. 下载nginx以及依赖软件
    image.png
    1. nginx的http模块使用pcre来解析正则表达式
    2. nginx使用zlib对http包的内容进行gzip
    3. 安装openssl库,让 nginx 支持 https(即在ssl协议上传输http)

通用的编译方法

make build && cd build && cmake ..

cmake -S . -B build

./configure && make && make install

1.4 运行nginx

安装完nginx后,会在/usr/local 下自动生成nginx文件夹。

cd /usr/local/nginx

# 启动nginx
./sbin/nginx -c conf/nginx.conf
# 暂停nginx
./sbin/nginx -s stop
# 重启nginx
./sbin/nginx -s reload

二、nginx配置文件conf

文件位置
image.png

nginx.conf


worker_processes 4;


events {
	worker_connections 1024;
}

http {

	# 负载均衡
	upstream backend {
		server 192.168.159.130:9002 weight=2; # 只要可以描述一个进程(server)的都可以,weight=2表示每两次切换到其他进程
		server 192.168.159.130:9003 weight=2;
	}

	server {
		listen 9000;
		location / {
#			root /root/install/nginx/html9000/;
			proxy_pass http://backend;
		}	
	}
	server {
		listen 9001;
		location / {
                        root /root/install/nginx/html9001/;
                }
	}
	server {
		listen 9002;
		location / {
                        root /root/install/share/nginx/html9002/;
                }
	}
	server {
		listen 9003;
		location / {
                        root /root/install/share/nginx/html9003/;
                }
	}

}

2.1 conf文件组成部分

nginx中定义了大量的关键字,比如worker_processes,nginx解析出这些关键字,然后调用指定的回调函数。
image.png

2.1.1 全局块

主要设置一些影响nginx 服务器整体运行的配置指令。

worker_processes 4

2.1.2 events块

events {
    worker_connections  1024;
}

主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

2.1.3 http块

Nginx 服务器配置中更改最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       10000;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

通常我们在添加功能时经常会修改该文件的内容,比如我们要添加一个关键字:

  1. 首先明确该关键字执行什么功能
  2. 比如是在返回响应文件时附带一个广告,那么我们在对应的location里添加这个关键字
  3. 编程时将对应的函数实现。
static ngx_command_t ngx_http_ad_filter_module_commands[] = {
	{
		ngx_string("ad"),
		NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_CONF_FLAG, // 可以放到conf的哪个位置
		ngx_conf_set_flag_slot,
		NGX_HTTP_LOC_CONF_OFFSET,
		offsetof(ngx_http_ad_filter_conf_t, enable), // 明确对应关键字的值在自定义结构体中的偏移量
		NULL
	},
	ngx_null_command // 结束标志
};

三、其他概念

3.1 nginx惊群

image.png

  1. listen在master进程,worker进程为master的子进程。
  2. 那么一个连接过来,4个worker都会被唤醒,只有一个进程会拿到连接(惊群效应)
    1. 分配一把钥匙,谁拿到钥匙谁处理连接

3.2 负载均衡

5种方法:

  1. 轮询算法:每个请求按时间顺序逐一分配
  2. 最少连接算法
  3. IP哈希算法:每个请求按访问的hash结果分配,访客固定访问一个后端服务器
  4. 指定轮询几率:weight指定访问次数
  5. fair

总结

本文介绍了nginx的基本概念,以及nginx.conf的构成。conf文件甚至可以实现简单的编程,在下一篇文章中将介绍。

参考链接:
https://github.com/0voice
https://blog.csdn.net/qq_40036754/article/details/102463099

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值