Nginx采用模块化设计,模块分为核心模块(如http、server、location等,构成Nginx基础功能)和扩展模块(可选功能)。常见扩展模块包括:
ngx_http_ssl_module(HTTPS支持)、ngx_http_gzip_module(响应压缩)、ngx_http_proxy_module(反向代理);ngx_pagespeed(页面性能优化)、ngx_cache_purge(缓存清除)、ngx_http_geoip_module(GeoIP地理位置识别)。Debian系统默认的Nginx仓库提供了多数常用模块,可通过apt直接安装:
sudo apt update;sudo apt install nginx(默认包含http、server等核心模块);http_subs_filter(响应内容替换)模块,执行sudo apt install libnginx-mod-http-subs-filter;安装http_echo(测试用)模块,执行sudo apt install libnginx-mod-http-echo。若需要未包含在APT中的模块(如ngx_pagespeed),需从源码编译:
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev(提供编译工具和库支持);wget http://nginx.org/download/nginx-<version>.tar.gz(替换<version>为目标版本,如1.25.3),解压后进入目录;--add-module指定第三方模块路径(如./configure --add-module=/path/to/ngx_pagespeed),若有其他需求可添加--with-http_ssl_module等选项;make(编译模块),sudo make install(安装到系统)。动态模块无需重新编译Nginx主程序,便于模块管理:
nginx -v(需1.9.11及以上);apt source nginx);./configure --with-compat --add-dynamic-module=/path/to/module);make modules),生成的.so文件位于objs/目录;nginx.conf的http块中添加load_module modules/ngx_http_<module_name>.so;(路径为.so文件的绝对或相对路径);sudo nginx -t(测试配置语法),sudo systemctl restart nginx(重启生效)。安装模块后,需在nginx.conf中配置指令以启用功能:
http {
gzip on; # 开启Gzip
gzip_types text/plain application/json; # 压缩类型
gzip_min_length 1024; # 最小压缩长度(字节)
}
server {
listen 80;
server_name example.com;
location /app {
proxy_pass http://backend_server:8080; # 后端服务器地址
proxy_set_header Host $host; # 传递客户端Host
proxy_set_header X-Real-IP $remote_addr; # 传递真实IP
}
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.pem; # 证书路径
ssl_certificate_key /path/to/privatekey.pem; # 私钥路径
location / {
root /var/www/html;
index index.html;
}
}
.gz文件,配置如下:server {
gzip_static on; # 开启静态Gzip
location /static {
alias /data/www;
expires 7d; # 缓存7天
}
}
```。
nginx -V 2>&1 | grep --color=auto 'with-http'(显示编译时包含的模块);nginx -T(查看完整配置,确认load_module指令是否存在);sudo systemctl restart nginx(重启生效)或sudo systemctl reload nginx(重新加载配置,不中断服务)。通过以上步骤,可在Debian系统上完成Nginx模块的安装、配置与使用,满足不同场景的功能需求。