在Web服务器和反向代理服务器领域,Nginx凭借其高性能、稳定性和丰富的功能获得了广泛的应用。本文将介绍一些Nginx中常见的模块,帮助你更好地理解和使用它们。
Nginx模块简介
Nginx的模块系统是其强大功能的核心所在,它允许用户根据需要灵活配置服务器的行为。Nginx的模块大致可以分为核心模块、标准HTTP模块、可选HTTP模块、邮件模块和其他第三方模块。下面我们将重点介绍一些常用的模块。
Nginx常见模块
Nginx 四层访问控制
访问控制基于模块ngx_http_access_module实现,可以通过匹配客户端源IP地址进行限制
注意: 如果能在防火墙设备控制,最好就不要在nginx上配置,可以更好的节约资源
官方帮助
http://nginx.org/en/docs/http/ngx_http_access_module.html
server {listen 80;server_name m.caoge.com; location / {root /data/nginx;allow 192.168.101.10;deny all;}location /pc {root /data/nginx/;index m.html;allow 192.168.101.11;deny all; #按先小范围在前,大范围在后排序}
}
Nginx 账户认证功能
由 ngx_http_auth_basic_module 模块提供此功能
官方帮助
http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
示例
#Ubuntu安装包
[root@ubuntu2404 ~]# apt -y install apache2-utils
#rocky安装包
[root@rocky9 ~]#dnf install -y httpd-tools#创建用户
#-b 非交互式方式提交密码
[root@rocky9 app]# htpasswd -cb /data/htpasswd user1 123456
Adding password for user user1
[root@rocky9 app]# htpasswd -b /data/htpasswd user2 123
Adding password for user user2
[root@rocky9 app]# cat /data/htpasswd
user1:$apr1$IggUX5D.$cjBGDD1PtDvCCND29nLnP/
user2:$apr1$whjkSYwv$WXdVXa.Juz6VvMu.OWTiB1#安全加固
[root@rocky9 app]# chown nginx /data/htpasswd
[root@rocky9 app]# chmod 600 /data/htpasswd [root@rocky9 app]# vim m.caoge.com.conf
server {listen 80;server_name m.caoge.com; location / {root /data/nginx;auth_basic "logint password";auth_basic_user_file /data/htpasswd;
}location /pc {root /data/nginx/;index m.html;
}
}
#重启Nginx并访问测试
[root@rocky9 app]# nginx -s reload[root@centos7 ~]# curl http://user1:123456@m.caoge.com
pc web
[root@ubuntu2404 ~]#curl -u caoge:123456 www.caoge.com
www.caoge.com
自定义错误页面
自定义错误页,同时也可以用指定的响应状态码进行响应,可用位置:http,server,location,if in location
http://nginx.org/en/docs/http/ngx_http_core_module.html#error_pageSyntax: error_page code ... [=[response]] uri;
Default: —
Context: http, server, location, if in location
server {listen 80;server_name m.caoge.com; error_page 500 502 503 504 404 /error.html;location = /error.html {root /data/nginx;
}location /pc {root /data/nginx/;index m.html;
}
}
#重启nginx并访问不存在的页面进行测试
自定义错误页面
error_page 404 /40x.html;
location = /40x.html {root /data/html/ ;
}
如果404,就转到主页
#404转为302
#error_page 404 /index.html;
server {listen 80;server_name m.caoge.com; error_page 404 =302 /index.html;error_page 500 403 502 /error.html;location = /error.html {root /data/nginx;
}location = /index.html {root /data/nginx/;
}
}
自定义错误日志
自定义错误日志
Syntax: error_log file [level];
Default:
error_log logs/error.log error;
Context: main, http, mail, stream, server, location
level: debug, info, notice, warn, error, crit, alert, emerg#关闭错误日志
error_log /dev/null;
server {listen 80