nginx配置文件详解


nginx是一个开源免费的web服务器软件,可以用来搭建一个网站。
nginx是俄罗斯人使用C语言开发的。
nginx是一个模块化的软件。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

nginx中有两种类型,一种是master、一种是worker
2.worker和master的关系
将master杀死之后,worker还在。并且还能访问,此时由worker去监听80端口
将worker杀死之后,master还在,并且master会去创建worker

nginx的模块

1.log
分为error.log和access.log

2.core

3.stub_status:连接访问的次数及状态

4.auth_user模块

5.rewrite:重定向模块

6.limit_conn:限制下载速度

7.limit_req:限制请求的次数

8.realip:获取真实的ip地址

官方nginx模块

安装

第一步:下载软件包

curl -O http://nginx.org/download/nginx-1.19.2.tar.gz

第二步:解压nginx软件压缩包

tar xf nginx-1.19.2.tar.gz

第三步:进入解压后的文件

cd nginx-1.19.2

第四步:解决依赖关系

yum -y install  make gcc pcre-devel zlib-devel openssl openssl-devel

第五步:指定安装的配置,如安装路径、开启的功能等

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

第六步:编译安装

make && make install

nginx配置文件的介绍

nginx配置文件的构成及各部分的作用
一个完整的nginx配置文件结构如下:

main
events{ 
    .....
}
http {
    ......
    upstream name {
        .......
    }
    server {
        ......
        location{
            ......
        }
    include /path/nginx/conf.d/*.conf;
    }
    ......
}

可以看到nginx配置文件大致被分成六个部分,分别是main、events、http、upstream、server、location这六个部分。
其中每个部分的作用如下:

main模块

main模块主要是用来对nginx做一些全局设置的,如可以打开的进程数、用户等

user www www;   #定义nginx运行的用户和用户组
worker_processes 8;   #定义nginx的最大worker数目,一般设置为与cpu的核数一致
error_log /var/log/nginx/error.log info;  #定义全局的错误日志类型及日志级别
pid /var/run/nginx.pid;   #设置nginx进程文件的位置
worker_rlimit_nofile 65535;  #设置一个nginx进程最多可以打开的文件描述符的数目,一般与ulimit -n的值一致

events模块

events模块用来指定nginx的工作模式和单个进程的连接数上限。如:

events {
	use epoll; #指定使用epoll模型,可以使用的模型有kqueue、rtsig、epoll、/dev/poll、select、poll,其中
	worker_connections 65535;  #设置单个进程的最大连接数,默认是1024,最大连接数=连接数*进程数
}

http模块

http模块是配置文件中最核心的部分,它包括了绝大部分http服务器相关属性的设置,如是否使用keepalive、gzip等,还包括upstrem、server等子模块。如:

http {
	include mime.types;  #文件扩展名与文件类型引射表
	include /usr/local/web/nginx/conf-manage/*.conf;   #指定可以检测该目录下的所有.conf文件,将其他配置文件嵌入到当前的nginx.conf文件中
	default_type application/octet-stream;  #设置默认的文件类型
	charset utf-8; #设置默认的字符编码
	server_names_hash_bucket_size 128;  #设置服务器名字的hash表大小
	client_body_buffer_size 128k;  #设置缓冲区代理缓冲用户端请求的最大字节数
	client_max_body_size 10m;  #设置客户端请求的最大单文件字节数
	sendfile        on; #开启高效的文件传输模式,开启之后nginx会调用sendfile函数去传输文件,当I/O负载较大时,建议关闭
	autoindex on;  #设置开启目录访问权限列表
	tcp_nopush on;  #防止网络阻塞
	tcp_nodelay on;  #防止网络延时
	keepalive  65;   #设置长连接的持续时间,单位为秒

	##gzip设置
	gzip on;   #表示开启gzip功能,即允许nginx传送.gz类型的压缩文件
}

长连接、短连接的区别:
短连接:每一次访问都要建立三次握手,即将数据传输完毕之后,就进行四次断开
长连接:将数据传输完毕之后,会保留一段时间的连接,保留时间是keepalive定义的,超过该时间之后就断开连接

upstream模块

upstream模块即用来做负载均衡的,定义一个upstream就相当于定义了一个负载均衡器,目前实现负载均衡的算法有4种,即轮询、ip_hash、fair、url_hash方法。

轮询:是nginx默认的负载均衡算法,轮询算法还可以增加每个服务器的权重,一般若服务器的性能或者配置不一样时,会让配置稍好一点的服务器的权重大一些,以此提供更好的服务。轮询方式就是每一台服务器按先后顺序依次访问

ip_hash:ip_hash算法是根据访问后端服务器的ip地址进行处理,每一个ip都会对应一个hash值,因此该方法下同一个ip的访客会固定到一个后端服务器

fair:fair算法时根据页面大小和加载时间长短智能地进行负载均衡,即根据后端服务器的响应时间来分配请求,响应时间短的优先分配,但是nginx默认不支持fair,因此需要用户手动安装,即下在upstream_fair模块,在编译安装的时候使用–add-module=下载模块的绝对路径。

url_hash:usl_hash算法是根据访问后端服务器的url进行处理,使来自同一个url的请求固定到同一个后端服务器,能够大大地提高后端缓存服务器地效率

常用参数有:
1.backup,指定将该服务器作为备用服务器,当所有能用的服务器都down掉后,backup的服务器便会自动提供服务。注意在ip_hash算法下,该参数失效,因为ip地址固定一个服务器
2.weight,指定该服务器在整个后端服务器中的权重。注意在ip_hash算法下,该参数失效,因为设置weight会导致流量不均匀。
3.max_fails,表示允许请求失败的次数
4.fail_timeout,表示在经历max_fails次失败后暂停服务的时间
5.max_conns,表示限制分配给后端服务器处理的最大连接数量,超过该数量后,则不会为该服务器分配新的连接

如:

upsteam upstream.name {
	ip_hash;   #指定负载均衡算法,不指定则默认为轮询,可以指定为fair、ip_hash、hash $request_uri
	server 192.168.0.2;
	server 192.168.0.3;
	server 192.168.0.5;
}

若需要增加nginx的某项功能,则可以直接用./configure --prefix=原安装路径 --add-module=增加模块的绝对路径,然后执行make进行编译,不能执行make install(会覆盖之前的配置),然后再找到新编译的nginx的执行文件,将其覆盖之前安装的nginx执行文件即可

server模块

server模块是用来定义监听服务器和端口的模块,其基本配置如下:

server {
	listen 80;  #指定其监听的端口号
	server_name test.com;   #指定其监听的服务器名字,即当用户访问test.com就会访问被该server监听,然后执行该server的功能
	root /usr/local/web/nginx/html;#设置该虚拟主机内web服务的根目录
	index index.html index.htm;  #设置该虚拟主机内web服务的首页
	access_log /usr/local/web/nginx/log/access.log #设置access.log的文件位置
	location {
		......
	}
}

server里面还可以进行很多设置,添加很多功能,如身份验证功能、文件下载功能、流量限制功能、身份验证功能等,具体功能参考官方文档的具体模块即可

location模块

location模块是nginx中可自定义程度最高的模块,主要用来定位和解析url的,通过正则匹配,用户可以通过location实现网页的各种处理
如:

location / {
	root /usr/local/web/nginx/html;
	index index.php index,html index.htm;
}

此外还可以实现网页的跳转,重定向等功能

location的优先级

首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求

检查配置文件是否正确

[root@centos-8 hxy]# nginx -t

nginx中高级模块

http {
    ......
    ###进行下载的流量限制
    limit_conn_zone $binary_remote_addr zone=sanchuang:10m;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
		#增加防盗链的功能
		location  ~* \.(gif|jpg|png|swf|flv) $ {
			root html/hxy;
			valid_referers none blocked;   #定义有效的引用,http请求包中referer字段
			if ($invalid_referer) {
				return 404;
			}
		} 
		
		##增加自动下载的功能,即根目录没有首页,也能访问,且发布的是一个下载页面
		location =/download {
			root html/download;
			autoindex on;   #开启自动索引功能
			auth_basic "sanchaung";
			auth_basic_user_file htpasswd;
		}

		###增加密码和用户名认证的功能以及状态统计功能,用htpasswd命令去生成用户名和密码
		location =/scstatus {
			root conf;
			stub_status;
			auth_basic "sanchaung";
			auth_basic_user_file htpasswd;
		}
	}                

设置权限验证
htpasswd生成用户名和密码
htpasswd -c /usr/local/hxy_nginx/conf/htpasswd 用户名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值