一、环境准备与前置条件
在正式安装前需完成基础环境配置,确保系统满足Nginx运行要求。建议使用主流Linux发行版(如CentOS 8/Ubuntu 22.04),内核版本建议3.10以上。
-
依赖库安装
Nginx编译需要PCRE(正则支持)、zlib(压缩支持)和OpenSSL(SSL支持)库。以CentOS为例执行:sudo yum install -y pcre-devel zlib-devel openssl-devel
Ubuntu系统使用:
sudo apt-get install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
-
用户与目录创建
建议使用专用用户运行Nginx进程:sudo groupadd -r nginxsudo useradd -r -g nginx -s /sbin/nologin -M nginx
创建日志目录并设置权限:
sudo mkdir -p /var/log/nginxsudo chown -R nginx:nginx /var/log/nginx
二、源码编译安装流程
相较于包管理器安装,源码编译可获得最新版本并灵活配置模块。
-
获取源码包
从官方托管仓库下载稳定版本(以1.25.3为例):wget https://nginx.org/download/nginx-1.25.3.tar.gztar zxvf nginx-1.25.3.tar.gzcd nginx-1.25.3
-
配置编译选项
关键参数说明:./configure \--prefix=/usr/local/nginx \ # 安装目录--user=nginx \ # 运行用户--group=nginx \ # 运行组--with-http_ssl_module \ # 启用SSL支持--with-http_v2_module \ # 启用HTTP/2--with-http_stub_status_module \ # 状态监控模块--with-threads \ # 启用线程池--with-stream # 启用TCP/UDP代理
完整参数列表可通过
./configure --help查看,生产环境建议添加--with-cc-opt优化编译选项。 -
编译与安装
执行编译(建议使用-j参数指定CPU核心数加速):make -j$(nproc) && sudo make install
三、服务配置与管理
安装完成后需进行基础配置和系统集成。
-
配置文件结构
主配置文件位于/usr/local/nginx/conf/nginx.conf,建议采用include机制拆分配置:/usr/local/nginx/conf/├── nginx.conf # 主配置├── mime.types # MIME类型定义├── conf.d/ # 虚拟主机配置│ └── default.conf└── sites-enabled/ # 符号链接目录
-
Systemd服务管理
创建服务文件/etc/systemd/system/nginx.service:[Unit]Description=nginx - high performance web serverAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -tExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=trueUser=nginxGroup=nginx[Install]WantedBy=multi-user.target
执行以下命令启用服务:
sudo systemctl daemon-reloadsudo systemctl enable nginxsudo systemctl start nginx
-
防火墙配置
开放HTTP/HTTPS端口:sudo firewall-cmd --permanent --add-service={http,https}sudo firewall-cmd --reload
四、验证与故障排查
安装完成后需进行功能验证和常见问题处理。
-
版本验证
/usr/local/nginx/sbin/nginx -v
输出应显示版本号(如
nginx version: 1.25.3) -
配置测试
执行语法检查:/usr/local/nginx/sbin/nginx -t
正常情况输出:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
-
常见问题处理
- 端口冲突:检查80/443端口占用情况
sudo ss -tulnp | grep ':80'
- 权限问题:确保日志目录可写
- 模块缺失:重新编译时添加缺失模块参数
- 端口冲突:检查80/443端口占用情况
五、性能优化建议
生产环境建议进行以下优化配置:
-
工作进程配置
在nginx.conf中设置worker数量:worker_processes auto; # 自动匹配CPU核心数worker_rlimit_nofile 65535; # 提升文件描述符限制
-
事件模型优化
events {use epoll; # Linux高效事件模型worker_connections 10240; # 单进程最大连接数multi_accept on; # 一次接受所有新连接}
-
HTTP核心优化
http {sendfile on; # 零拷贝传输tcp_nopush on; # 优化数据包发送keepalive_timeout 65; # 长连接超时client_max_body_size 20m; # 限制请求体大小gzip on; # 启用压缩gzip_types text/css application/javascript image/svg+xml;}
六、扩展功能实现
Nginx支持通过模块扩展功能,常见场景包括:
-
动态模块加载
编译时添加--with-compat参数支持动态模块:./configure --with-compat ...make modules
加载模块示例:
load_module modules/ngx_http_brotli_filter_module.so;
-
Lua脚本支持
通过OpenResty或编译ngx_http_lua_module实现动态逻辑:location /api {default_type 'application/json';content_by_lua_block {ngx.say('{"status":"ok"}')}}
-
限流配置
基于令牌桶算法实现限流:http {limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {location /search/ {limit_req zone=one burst=5;}}}
通过系统化的安装配置流程,开发者可快速搭建高性能的Nginx服务。建议定期关注官方安全公告,及时升级到最新稳定版本。对于高并发场景,可结合负载均衡和缓存策略进一步提升系统吞吐能力。