Linux系统下Nginx安装与配置全流程指南

一、环境准备与前置条件

在正式安装前需完成基础环境配置,确保系统满足Nginx运行要求。建议使用主流Linux发行版(如CentOS 8/Ubuntu 22.04),内核版本建议3.10以上。

  1. 依赖库安装
    Nginx编译需要PCRE(正则支持)、zlib(压缩支持)和OpenSSL(SSL支持)库。以CentOS为例执行:

    1. sudo yum install -y pcre-devel zlib-devel openssl-devel

    Ubuntu系统使用:

    1. sudo apt-get install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
  2. 用户与目录创建
    建议使用专用用户运行Nginx进程:

    1. sudo groupadd -r nginx
    2. sudo useradd -r -g nginx -s /sbin/nologin -M nginx

    创建日志目录并设置权限:

    1. sudo mkdir -p /var/log/nginx
    2. sudo chown -R nginx:nginx /var/log/nginx

二、源码编译安装流程

相较于包管理器安装,源码编译可获得最新版本并灵活配置模块。

  1. 获取源码包
    从官方托管仓库下载稳定版本(以1.25.3为例):

    1. wget https://nginx.org/download/nginx-1.25.3.tar.gz
    2. tar zxvf nginx-1.25.3.tar.gz
    3. cd nginx-1.25.3
  2. 配置编译选项
    关键参数说明:

    1. ./configure \
    2. --prefix=/usr/local/nginx \ # 安装目录
    3. --user=nginx \ # 运行用户
    4. --group=nginx \ # 运行组
    5. --with-http_ssl_module \ # 启用SSL支持
    6. --with-http_v2_module \ # 启用HTTP/2
    7. --with-http_stub_status_module \ # 状态监控模块
    8. --with-threads \ # 启用线程池
    9. --with-stream # 启用TCP/UDP代理

    完整参数列表可通过./configure --help查看,生产环境建议添加--with-cc-opt优化编译选项。

  3. 编译与安装
    执行编译(建议使用-j参数指定CPU核心数加速):

    1. make -j$(nproc) && sudo make install

三、服务配置与管理

安装完成后需进行基础配置和系统集成。

  1. 配置文件结构
    主配置文件位于/usr/local/nginx/conf/nginx.conf,建议采用include机制拆分配置:

    1. /usr/local/nginx/conf/
    2. ├── nginx.conf # 主配置
    3. ├── mime.types # MIME类型定义
    4. ├── conf.d/ # 虚拟主机配置
    5. └── default.conf
    6. └── sites-enabled/ # 符号链接目录
  2. Systemd服务管理
    创建服务文件/etc/systemd/system/nginx.service

    1. [Unit]
    2. Description=nginx - high performance web server
    3. After=network.target
    4. [Service]
    5. Type=forking
    6. PIDFile=/usr/local/nginx/logs/nginx.pid
    7. ExecStartPre=/usr/local/nginx/sbin/nginx -t
    8. ExecStart=/usr/local/nginx/sbin/nginx
    9. ExecReload=/usr/local/nginx/sbin/nginx -s reload
    10. ExecStop=/usr/local/nginx/sbin/nginx -s quit
    11. PrivateTmp=true
    12. User=nginx
    13. Group=nginx
    14. [Install]
    15. WantedBy=multi-user.target

    执行以下命令启用服务:

    1. sudo systemctl daemon-reload
    2. sudo systemctl enable nginx
    3. sudo systemctl start nginx
  3. 防火墙配置
    开放HTTP/HTTPS端口:

    1. sudo firewall-cmd --permanent --add-service={http,https}
    2. sudo firewall-cmd --reload

四、验证与故障排查

安装完成后需进行功能验证和常见问题处理。

  1. 版本验证

    1. /usr/local/nginx/sbin/nginx -v

    输出应显示版本号(如nginx version: 1.25.3

  2. 配置测试
    执行语法检查:

    1. /usr/local/nginx/sbin/nginx -t

    正常情况输出:

    1. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    2. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  3. 常见问题处理

    • 端口冲突:检查80/443端口占用情况
      1. sudo ss -tulnp | grep ':80'
    • 权限问题:确保日志目录可写
    • 模块缺失:重新编译时添加缺失模块参数

五、性能优化建议

生产环境建议进行以下优化配置:

  1. 工作进程配置
    nginx.conf中设置worker数量:

    1. worker_processes auto; # 自动匹配CPU核心数
    2. worker_rlimit_nofile 65535; # 提升文件描述符限制
  2. 事件模型优化

    1. events {
    2. use epoll; # Linux高效事件模型
    3. worker_connections 10240; # 单进程最大连接数
    4. multi_accept on; # 一次接受所有新连接
    5. }
  3. HTTP核心优化

    1. http {
    2. sendfile on; # 零拷贝传输
    3. tcp_nopush on; # 优化数据包发送
    4. keepalive_timeout 65; # 长连接超时
    5. client_max_body_size 20m; # 限制请求体大小
    6. gzip on; # 启用压缩
    7. gzip_types text/css application/javascript image/svg+xml;
    8. }

六、扩展功能实现

Nginx支持通过模块扩展功能,常见场景包括:

  1. 动态模块加载
    编译时添加--with-compat参数支持动态模块:

    1. ./configure --with-compat ...
    2. make modules

    加载模块示例:

    1. load_module modules/ngx_http_brotli_filter_module.so;
  2. Lua脚本支持
    通过OpenResty或编译ngx_http_lua_module实现动态逻辑:

    1. location /api {
    2. default_type 'application/json';
    3. content_by_lua_block {
    4. ngx.say('{"status":"ok"}')
    5. }
    6. }
  3. 限流配置
    基于令牌桶算法实现限流:

    1. http {
    2. limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    3. server {
    4. location /search/ {
    5. limit_req zone=one burst=5;
    6. }
    7. }
    8. }

通过系统化的安装配置流程,开发者可快速搭建高性能的Nginx服务。建议定期关注官方安全公告,及时升级到最新稳定版本。对于高并发场景,可结合负载均衡和缓存策略进一步提升系统吞吐能力。