nginx之ngx_http_access_module模块使用

本文介绍如何使用 Nginx 的 deny 和 allow 命令来控制客户端 IP 的访问权限。通过实例展示了如何限制特定 IP 地址的访问,并开放其他 IP 范围的访问。

一,官方使用文档

       官方使用文档路径http://nginx.org/en/docs/http/ngx_http_access_module.html

#通过deny拒绝,allow允许命令,来限制和放开某些client IP的访问
location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}
ps:限制规则是按照顺序匹配的,上述例子表示:只容许IP4 192.168.1.0/24及10.1.1.0/16的IP和IP6 2001:0db8::/32的IP可以访问(排除192.168.1.1),其他IP都拒绝访问。

   通过deny和allow命令,来控制客户端IP的访问。

<think> 嗯,用户这次的问题很明确:如何在Linux系统上安装Nginxngx_http_v2_module模块。从引用内容看,用户似乎已经接触过Nginx基础编译安装(引用[2][4]),但现有安装缺少HTTP/2支持。 用户引用的资料里有几个关键线索:引用[2]展示了含--with-http_ssl_module的编译参数,引用[4]验证模块的方法。不过核心问题在于,ngx_http_v2_moduleNginx 1.9.5开始才作为独立模块存在,且依赖OpenSSL库——这点用户可能没意识到。 需要区分两种情况:用户是首次安装还是升级现有Nginx?引用中同时出现两种路径(/usr/local/openresty和/usr/local/nginx),可能用户环境较复杂。安全起见,我会建议从源码重新编译的方案,并强调备份和SSL依赖。 注意到引用[3]提到worker_cpu_affinity等优化参数,但用户当前只需HTTP/2模块,所以编译参数保持简洁。不过要提醒用户,生产环境可能需要额外优化参数。 用户上次问过access模块配置(引用[1]),这次转向底层模块安装,可能是在搭建HTTPS服务。可以推测下一步会问证书配置或HTTP/2优化,所以相关问题里埋了这个伏笔。 最后检查技术点:必须强调HTTP/2强制依赖TLS(即必须同时启用ssl模块),且编译前要确认openssl版本——引用[2]里用OpenResty的示例不一定满足,这点要特别说明。 </think> 在Linux系统上安装Nginx的`ngx_http_v2_module`模块(用于HTTP/2支持),需通过源码重新编译Nginx实现。以下是具体步骤: --- ### 📌 安装步骤 #### 1. **安装依赖库** ```bash # Debian/Ubuntu sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev # RHEL/CentOS sudo yum groupinstall "Development Tools" sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel ``` #### 2. **下载Nginx源码** ```bash wget http://nginx.org/download/nginx-1.25.3.tar.gz # 替换为最新稳定版 tar zxvf nginx-*.tar.gz cd nginx-*/ ``` #### 3. **配置编译参数** 添加`--with-http_ssl_module`(必需)和`--with-http_v2_module`: ```bash ./configure \ --prefix=/usr/local/nginx \ # 安装路径 --with-http_ssl_module \ # HTTP/2依赖TLS --with-http_v2_module \ # 启用HTTP/2模块 --with-http_realip_module \ # 可选:常用模块 --with-http_stub_status_module # 可选:状态监控 ``` > 📌 **注意**:若需保留原有模块,需通过`nginx -V`查看旧配置参数并完整复制到`./configure`命令中[^4]。 #### 4. **编译并安装** ```bash make sudo make install ``` #### 5. **验证模块安装** ```bash /usr/local/nginx/sbin/nginx -V 2>&1 | grep -o http_v2_module # 若输出"http_v2_module"则表示成功[^4] ``` #### 6. **配置Nginx启用HTTP/2** 修改站点配置文件,在`server`块中添加: ```nginx server { listen 443 ssl http2; # 关键:http2标识 server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; # ...其他配置 } ``` #### 7. **重启Nginx** ```bash sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx ``` --- ### ⚠️ 关键注意事项 1. **依赖关系**:HTTP/2 **必须**与TLS(SSL证书)同时启用,故`--with-http_ssl_module`是强制依赖。 2. **版本要求**:Nginx ≥ 1.9.5 才原生支持`ngx_http_v2_module`。 3. **OpenSSL版本**:建议使用OpenSSL ≥ 1.0.2(支持ALPN扩展)。 4. **动态模块(可选)**: 若需动态加载模块,添加`--with-compat`和`--add-dynamic-module`参数编译,并在`nginx.conf`中通过`load_module`指令加载。 --- ### 🔍 验证HTTP/2生效 - **浏览器检查**:Chrome开发者工具 → Network → Protocol列显示`h2`。 - **命令行工具**: ```bash curl -I --http2 https://example.com # 输出含"HTTP/2 200"即成功 ``` --- ### ❓ 相关问题 1. **如何为Nginx申请免费的SSL证书(如Let's Encrypt)?** 2. **如何优化NginxHTTP/2性能(如调整并发流、头部压缩)?** 3. **若编译时缺少依赖导致报错(如`openssl not found`),应如何解决?** 4. **如何将现有Nginx升级到新版本并保留模块?** > 引用说明: > [^1]: `ngx_http_access_module`的配置方法参考。 > [^2]: OpenResty的编译参数示例,展示了基础模块配置。 > [^4]: Nginx模块验证方法及路径规范示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值