Nginx 1.30.4 编译安装与参数调优

简介: 本文详解Nginx 1.30.4在CentOS/RHEL 10上的源码编译安装全流程:涵盖依赖安装、用户创建、模块定制、systemd服务配置、高并发调优(worker、连接、压缩、日志)、内核参数优化及安全加固,开箱即用,适配企业生产环境。(239字)

Nginx 是一款轻量级、高性能、高并发的开源Web服务器、反向代理与负载均衡软件,凭借低资源占用、高稳定性的核心优势,成为当下互联网行业主流的服务部署组件,广泛应用于各类网站及业务系统的Web服务、反向代理、负载均衡场景。其基于宽松的类BSD开源协议发布,可免费商用。本文将完整展示 Nginx 1.30.4 源码编译安装、环境配置、systemd服务管理、内核及配置高性能调优的全套流程,适配CentOS/RHEL 10系列系统,可直接落地应用于企业生产环境。

1、源码编译需要gcc编译工具、正则、加密、压缩等依赖库,先执行依赖安装命令,确保编译环境完整。

[root@localhost ~]# dnf install -y epel-release
[root@localhost ~]# dnf install -y gcc gcc-c++ make zlib zlib-devel pcre2 pcre2-devel openssl openssl-devel libtool
Last metadata expiration check: 0:25:59 ago on Wed 02 Sep 2026 10:03:21 AM CST.
Package gcc-14.4.1-3.el10.x86_64 is already installed.
Package gcc-c++-14.4.1-3.el10.x86_64 is already installed.
Package make-1:4.4.1-9.el10.x86_64 is already installed.
Package zlib-ng-compat-2.2.3-3.el10.x86_64 is already installed.
Package zlib-ng-compat-devel-2.2.3-3.el10.x86_64 is already installed.
Package pcre2-10.44-1.el10.3.x86_64 is already installed.
Package pcre2-devel-10.44-1.el10.3.x86_64 is already installed.
Package openssl-1:3.5.8-1.el10.x86_64 is already installed.
Package openssl-devel-1:3.5.8-1.el10.x86_64 is already installed.
Package libtool-2.4.7-14.el10.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

2、从Nginx官方镜像下载稳定版1.30.4源码包,解压后进入源码目录,为编译做准备。

[root@localhost ~]# wget https://nginx.org/download/nginx-1.30.4.tar.gz
[root@localhost ~]# tar -xzvf nginx-1.30.4.tar.gz
[root@localhost nginx-1.30.4]# ls -lh
total 916K
drwxr-xr-x 6 502 wheel 4.0K Sep  2 10:28 auto
-rw-r--r-- 1 502 wheel 338K Jul 16 01:24 CHANGES
-rw-r--r-- 1 502 wheel 517K Jul 16 01:24 CHANGES.ru
-rw-r--r-- 1 502 wheel 5.1K Jul 16 01:20 CODE_OF_CONDUCT.md
drwxr-xr-x 2 502 wheel  168 Sep  2 10:28 conf
-rwxr-xr-x 1 502 wheel 2.6K Jul 16 01:20 configure
drwxr-xr-x 4 502 wheel   72 Sep  2 10:28 contrib
-rw-r--r-- 1 502 wheel 4.9K Jul 16 01:20 CONTRIBUTING.md
drwxr-xr-x 2 502 wheel   40 Sep  2 10:28 html
-rw-r--r-- 1 502 wheel 1.3K Jul 16 01:20 LICENSE
drwxr-xr-x 2 502 wheel   21 Sep  2 10:28 man
-rw-r--r-- 1 502 wheel  15K Jul 16 01:20 README.md
-rw-r--r-- 1 502 wheel 4.8K Jul 16 01:20 SECURITY.md
drwxr-xr-x 9 502 wheel   91 Jul 16 01:20 src
-rw-r--r-- 1 502 wheel 1.7K Jul 16 01:20 SUPPORT.md

3、为保证服务安全,创建不可登录系统用户运行Nginx,同时创建临时文件目录、日志存储目录,规范文件管理。

[root@localhost ~]# useradd -s /sbin/nologin nginx
[root@localhost ~]# mkdir -p /var/tmp/nginx
[root@localhost ~]# mkdir -p /var/log/nginx

4、自定义Nginx安装路径、日志路径、进程文件路径,同时开启SSL、状态监控、反向代理、流媒体等核心常用模块,适配绝大多数生产场景。

[root@localhost nginx-1.30.4]# mkdir -p /usr/local/nginx
[root@localhost nginx-1.30.4]# ./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/tmp/nginx/client_body \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_addition_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-stream \
--with-stream_ssl_module

[root@localhost nginx-1.30.4]# make
[root@localhost nginx-1.30.4]# make install

默认Nginx会暴露版本号,存在一定安全风险,可通过修改源码文件隐藏版本信息(本文仅展示配置,按需修改)。

[root@localhost ~]# vim nginx-1.30.4/src/core/nginx.h

#define nginx_version      1030004
#define NGINX_VERSION      "1.30.4"
#define NGINX_VER          "nginx/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"

5、通过版本命令验证安装是否成功,确认编译参数、依赖版本无误。输出包含Nginx版本、GCC编译版本、OpenSSL版本及已开启的模块,即代表编译安装成功。

[root@localhost nginx-1.30.4]# cd 
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.30.4
built by gcc 14.4.1 20260724 (Red Hat 14.4.1-3) (GCC) 
built with OpenSSL 3.5.8 25 Aug 2026
TLS SNI support enabled

6、为方便全局调用nginx命令,将程序路径加入系统环境变量。

[root@localhost ~]# echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# nginx -v
nginx version: nginx/1.30.4

7、创建systemd服务文件,实现Nginx开机自启、启停、重载管理,适配系统服务管理规范。

[root@localhost ~]# vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl status nginx
● nginx.service - nginx
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: disabled)
     Active: active (running) since Wed 2026-09-02 10:59:58 CST; 7s ago
 Invocation: c7d50f2edde24e01b45bd3a7e33d8f8c
    Process: 14300 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
   Main PID: 14301 (nginx)
      Tasks: 2 (limit: 10320)
     Memory: 1.9M (peak: 2.3M)
        CPU: 8ms
     CGroup: /system.slice/nginx.service
             ├─14301 "nginx: master process /usr/local/nginx/sbin/nginx"
             └─14302 "nginx: worker process"

Sep 02 10:59:58 localhost systemd[1]: Starting nginx.service - nginx...
Sep 02 10:59:58 localhost systemd[1]: Started nginx.service - nginx.

重载服务配置并启动

[root@localhost ~]# nginx -t          # 检查配置语法
[root@localhost ~]# nginx -s reload   # 平滑重启
[root@localhost ~]# nginx -s stop     # 快速停止
[root@localhost ~]# nginx -s quit     # 优雅停止

8、备份默认配置文件后,对 nginx.conf 进行高并发调优,适配生产大流量场景,开启压缩、连接优化、状态监控等功能。

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# ll
total 68
-rw-r--r-- 1 root root 1077 Sep  2 10:33 fastcgi.conf
-rw-r--r-- 1 root root 1077 Sep  2 10:34 fastcgi.conf.default
-rw-r--r-- 1 root root 1007 Sep  2 10:33 fastcgi_params
-rw-r--r-- 1 root root 1007 Sep  2 10:34 fastcgi_params.default
-rw-r--r-- 1 root root 2837 Sep  2 10:34 koi-utf
-rw-r--r-- 1 root root 2223 Sep  2 10:34 koi-win
-rw-r--r-- 1 root root 5349 Sep  2 10:33 mime.types
-rw-r--r-- 1 root root 5349 Sep  2 10:34 mime.types.default
-rw-r--r-- 1 root root 2630 Sep  2 10:33 nginx.conf
-rw-r--r-- 1 root root 2630 Sep  2 10:34 nginx.conf.default
-rw-r--r-- 1 root root  636 Sep  2 10:33 scgi_params
-rw-r--r-- 1 root root  636 Sep  2 10:34 scgi_params.default
-rw-r--r-- 1 root root  664 Sep  2 10:33 uwsgi_params
-rw-r--r-- 1 root root  664 Sep  2 10:34 uwsgi_params.default
-rw-r--r-- 1 root root 3611 Sep  2 10:34 win-utf
[root@localhost conf]# 
[root@localhost conf]# cp -a nginx.conf nginx.conf.bak

替换完整优化配置

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
# ------------------------------------
# 全局配置
# ------------------------------------
user nginx nginx;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

# -------------------------------
# Events 块
# ------------------------------
events {
   
    use epoll;
    worker_connections 65535;
    multi_accept on;
}

# --------------------------
# HTTP块通用调优
# --------------------------

http {
   
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    # 调优参数
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 1000;
    client_max_body_size 100M;
    client_body_buffer_size 128k;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 32k;
    client_header_timeout 10;
    client_body_timeout 10;
    send_timeout 10;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_vary on;

    include vhost/*.conf;

    server {
   
        listen       80;
        server_name  localhost;

        location / {
   
            root   html;
            index  index.html index.htm;
        allow 0.0.0.0;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
   
            root   html;
        }

    # 性能监控
    location /nginx-status{
   
        stub_status on;
        allow 127.0.0.1;
        deny all;
    }
    }
}

9、高并发场景依赖系统内核参数优化,调整TCP连接、文件句柄等核心参数,突破系统默认限制。

[root@localhost ~]# vim /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
fs.file-max = 6553500

[root@localhost ~]# sysctl -p
[root@localhost ~]# cat /proc/sys/fs/file-max 
6553500
[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_tw_reuse 
1

10、调高Nginx用户文件句柄最大限制,解决高并发下文件打开数耗尽问题,修改后需重新登录会话生效。

[root@localhost ~]# vim /etc/security/limits.conf
nginx soft nofile 65535
nginx hard nofile 65535

[root@localhost ~]# ulimit -n
65535
目录
相关文章
|
8天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1832 14
|
7天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
13天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
12天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1655 3
|
7天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
9天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
800 2
|
7天前
|
缓存 测试技术 API
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
DeepSeek V4.1 Flash 内测不用申请,base_url 不变、改个模型名就能调,9/10 到期。本文讲清接入、计费限流与多模态注意点。
816 0
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
|
14天前
|
缓存 数据可视化 开发工具
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
DeepSeek Harness 的更新分两层:本体更新(npx 自动最新、npm update -g、源码 git pull)与插件更新(插件市场点更新、命令行覆盖安装)。本文按「准备 → 更新本体 → 更新插件 → 更新后检查」四步走,覆盖新手常见疑问。
1649 1
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
|
21天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3999 5
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
12天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1159 0