【nginx模块01】

1.nginx的功能

web服务器,代理,负载均衡,安全控制

2.nginx的优势

轻量,开源,高性能,高可靠,模块化(功能,代码),配置可读性高,二次开发容易

3.nginx应用场景

web应用,缓存,代理,负载均衡,安全访问

4.nginx的安装

epel源,官方源,源码

5.nginx的配置文件

/etc/nginx/nginx.conf

核心模块

事件模块

HTTP模块

server模块

location

/etc/nginx/conf.d/*.conf

服务管理

nginx.service

systemctl reload nginx

systemctl start nginx

nginx -v #版本

nginx -V #编译选项

nginx -t #语法测试

一、nginx目录索引

默认不允许列出整个目录浏览下载

syntax: autoindex on | off

default: autoindex off;

context: http, server, location

autoindex_exact_size off;

默认为on,显示出文件的大小,单位:bytes

修改为off,显示文件大概大小,单位kB、MB、BG

autoindes_localtime on;

默认为off,显示文件为GMT时间,文件上传的时间

修改为on,显示为服务器时间,文件上传的时间

location /download {

root /oldboy_code;

autoindex on;

charset utf-8,gbk; #中文乱码解析

autoindex_exact_size off;

autoindex_localtime on;

}

# download目录 在oldboy_code 下

mkdir /oldboy_code/zuoye

将源码解压到zuoye目录中

vi zuoye.conf

server {

listen 80;

server_name upload.oldboy.com;

location / {

root /oldboy_code/zuoye;

index index.html;

}

}

nginx -t #测试

systemctl reload nginx

tail /var/log/nginx/error.log

二、nginx状态监控

--with-http_stub_status_module模块支持

syntax: stub_status

defautl: -

context: server,location

nginx -V &> 1.txt

grep status 1.txt 查看是否安装了模块

vim game.conf

server {

listen 80;

server_name game.oldboy.com;

location /nginx_status {

stub_status;

access_log off;

}

}

nginx -t

systemctl reload nginx

systemctl restart nginx #清空所有连接数

http://IP/nginx_status/

vi nginx.conf #主配置文件

keepalive_timeout 0; #测试短和长连接,刷新status

三、nginx访问控制

基于IP的访问控制:http_access_module

//允许配置语法

Syntax: allow address | CIDR | unix: | all;

Default: —

Context: http, server, location, limit_except

//拒绝配置语法

Syntax: deny address | CIDR | unix: | all;

Default: —

Context: http, server, location, limit_except

两种写法:

先写允许,默认拒绝

先写拒绝,默认允许

从上往下匹配。

1.实例,只允许固定IP访问status

vim game.conf

server {

listen 80;

server_name game.oldboy.com;

location /nginx_status {

stub_status;

access_log off;

allow 10.0.0.1;

deny all;

}

}

基于用户登陆认证:http_auth_basci_module

//配置语法

Syntax: auth_basic string | off;

Default:

auth_basic off;

Context: http, server, location, limit_except

//用户密码记录配置文件

Syntax: auth_basic_user_file file;

Default: —

Context: http, server, location, limit_except

yum install https-tools #生成密码工具 ab工具也是这个包

htpasswd -b -c /etc/nginx/auth_conf oldboy 123456

实例:

vim game.conf

server {

listen 80;

server_name game.oldboy.com;

location /nginx_status {

stub_status;

access_log off;

allow 10.0.0.1;

deny all;

auth_basic "Don't test, get out !"

auth_basic_user_file /etc/nginx/.auth.conf

}

}

四、nginx访问限制

ngx_http_limit_conn_module #根据定义的key来限制每个键值的连接数。

limit_conn_module #连接频率限制

连接限制语法:

Syntax: limit_conn_zone key zone=name:size;

Default: —

Context: http

Syntax: limit_conn zone number;

Default: —

Context: http, server, location

变量:

binary_remote_addr 固定长度4字节

remote_addr 固定长度7-15字节

案例:

vi game.conf

http {

//http段配置连接限制,同一时刻只允许一个客户端ip连接

limit_conn_zone $binary_remote_addr zone=conn_game:10m; #IP有多少,1个ip4个字节,10m够用

...

server {

...

location / {

//同一个时刻只允许一个客户端IP连接

limit_conn conn_game 1;

}

}

}

nginx -t

nginx -s reload

limit_req_module #请求频率限制,优化中,使用这个优化,限制单个IP在1s内的请求数

Syntax: limit_req zone=name [burst=number] [nodelay | delay=number];

Default: —

Context: http, server, location

Syntax: limit_req_zone key zone=name:size rate=rate [sync];

Default: —

Context: http

vim game.conf

http {

//http配置请求限制,rate限制速率,限制1s最多1个请求

limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;

..

server {

location / {

//1r/s只接收1个请求,其余拒绝,返回错误码

limit_req zone=req_zone;

//请求超过1r/s,其他被延迟处理,请求超过burst,其他返回503

limit req_zone=req_zone burst=3 nodelay;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一些常用的 Nginx 模块及其安装方法: 1. ngx_http_ssl_module:提供 HTTPS 支持。 安装命令:`sudo apt-get install nginx-extras` 2. ngx_http_gzip_module:开启 gzip 压缩功能,可以加快网页加载速度。 安装命令:`sudo apt-get install nginx-extras` 3. ngx_http_geoip_module:根据客户端 IP 地址,提供地理位置信息。 安装命令:`sudo apt-get install nginx-extras` 4. ngx_http_realip_module:让 Nginx 获取真实的客户端 IP 地址。 安装命令:`sudo apt-get install nginx-extras` 5. ngx_http_stub_status_module:提供 Nginx 自身状态的监控信息。 安装命令:无需安装,Nginx 默认已经安装。 6. ngx_http_limit_conn_module:限制客户端连接数。 安装命令:`sudo apt-get install nginx-extras` 7. ngx_http_limit_req_module:限制客户端请求速率。 安装命令:`sudo apt-get install nginx-extras` 以上模块都可以通过编译 Nginx 来安装。在编译 Nginx 时,可以添加相应的选项来开启或禁用这些模块。 ### 回答2: 常用的nginx模块安装有以下几种方法: 1. 源码编译安装:首先从官方网站或GitHub上下载nginx源代码包,解压后进入目录,然后执行配置命令 "./configure",根据需要添加所需模块的参数,最后执行 "make" 和 "make install" 命令进行编译和安装。 2. 使用apt-get或yum等包管理工具:使用适合的命令进行nginx的安装,如"apt-get install nginx"或"yum install nginx"。这样安装的nginx一般是编译时默认带有一些常用模块的。 3. 通过第三方工具安装:有一些第三方工具可以帮助自动化编译和安装nginx及其模块,例如通过使用openresty工具集、ngx_openresty或nginx-build等来实现。 4. 动态模块nginx 1.9.11及以上版本支持动态加载模块,可以通过在配置文件中使用 "load_module" 指令加载模块。首先编译动态模块,然后在配置文件中添加 "load_module" 指令指定模块文件路径即可。 在安装nginx模块时,需要注意源代码包版本与nginx版本兼容性,以及模块之间的依赖关系。根据实际需求,选择合适的安装方法进行配置和安装常用的nginx模块,如gzip模块、proxy模块、rewrite模块、ssl模块等。正确安装和配置模块可以提高nginx的性能,并扩展其功能,更好地满足网站或应用的需求。 ### 回答3: 常用的nginx模块安装一般通过以下几个步骤完成: 1. 查看已安装的nginx版本: 使用`nginx -v`或`nginx -V`命令查看已安装的nginx版本。该命令会显示nginx的版本信息,包括编译参数。 2. 下载所需的模块源码: 到nginx官方网站(http://nginx.org/)或其他第三方网站上下载所需的模块源码。通常模块源码会以`.tar.gz`或`.zip`等压缩格式提供。 3. 解压模块源码: 使用相应的解压工具(例如tar或unzip)解压下载的模块源码。 4. 进入nginx源码目录: 使用命令行进入已安装的nginx源码目录。该目录通常位于`/usr/local/nginx`或`/etc/nginx`。 5. 配置编译参数: 使用文本编辑器打开nginx的配置文件`nginx.conf`,在文件中找到`./configure`命令,并在其后面添加需要安装的模块的编译参数。常用的模块包括HttpProxyModule、HttpSslModule、HttpRewriteModule等。例如,要启用HttpProxyModule,可以在`./configure`后添加`--with-http_proxy_module`参数。 6. 编译和安装: 使用命令`make`编译修改后的配置文件。编译完成后,使用命令`make install`安装编译后的nginx。 7. 验证模块安装: 使用`nginx -t`命令验证nginx配置文件是否正确。如果配置文件无误,使用`nginx -s reload`命令重新加载nginx配置。 通过以上步骤,常用的nginx模块就可以顺利安装并生效了。如果遇到编译错误或其他问题,可以参考相应的错误提示或查询相关的文档和社区讨论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值