Nginx源码编译安装全过程

 更新时间:2026年01月29日 09:40:13   作者:姐姐,我还可以  
Nginx是一个高性能的HTTP和反向代理服务器,具有异步非阻塞机制和轻量级的特点,它适用于多种场景,如Web网站服务、虚拟主机、反向代理、负载均衡和Web缓存服务器,Nginx的配置简洁,使用方便,具有较高的稳定性和抗并发能力

Nginx

Nginx的特点

最核心的区别在于Nginx 采用异步非阻塞机制 ,多个连接可以对应一个进程;Apache 采用的是同步阻塞+多进程/线程模型,一个连接对应一个进程

  • Nginx 抗并发能力更高
  • Nginx 更轻量,内存、CPU资源消耗更少
  • Nginx 配置简洁,使用场景多,稳定性高

Nginx的使用场景

  1. 用作Web网站服务,处理http静态页面请求
  2. 用作虚拟主机,实现一个服务器用于做多个网站站点
  3. 用作反向代理、负载均衡,可以作为网关代理服务器接收客户端的请求转发给后端节点服务器集群
  4. 用作web缓存服务器

Nginx 有哪些进程

  • master进程:管理worker进程,加载配置文件
  • worker进程:处理请求连接

root 和 alias 指定路径的区别

root(根目录)

处理方式: root路径+location路径

例:

#nginx.conf 配置示例
location /abc {
    root /var/www;
}



url访问:
http://<IP>/abc/kfc/test.html


test.html文件存放在
/var/www/abc/kfc/test.html



http://IP地址/abc/kfc/test.html ------>> /var/www/abc/kfc/test.html

alias(别名目录、虚拟目录)

alias路径替换location路径

例:

#nginx.conf 配置示例
location /abc {
    alias /var/www;
}



url访问:
http://<IP>/abc/kfc/test.html


test.html文件存放在
/var/www/kfc/test.html



http://IP地址/abc/kfc/test.html ------>> /var/www/kfc/test.html

使用源码编译安装Nginx

准备工作

  • 关闭安全防护系统
systemctl disable firewalld.service --now

setenforce 0

	SELINUX=enforcing		-->			SELINUX=0 

  • 下载源码安装包,并上传至/opt目录下

Nginx官网

Nginx下载页面

当前我选择 Nginx1.25.5,以便等会进行平滑升级到最新版本 Nginx1.26.0

使用XFTP进行文件传输——上传到/opt目录下

  • 解压文件到当前目录
cd /opt

tar xf nginx-1.25.5.tar.gz

ll

  • 创建运行用户、组
useradd -M -s /sbin/nologin nginx

id nginx

安装依赖包

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

编译安装Nginx

cd /opt/nginx-1.25.5/

./configure \
--prefix=/usr/local/nginx \							#指定nginx的安装路径
--user=nginx \										#指定用户名
--group=nginx \										#指定组名
--with-http_stub_status_module						#启用 http_stub_status_module 模块以支持状态统计

make && make install		


ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		#让系统识别nginx的操作命令

检查、启动、重启、停止 nginx服务

  • 检查nginx服务配置
nginx -t								#检查配置文件是否配置正确

  • 启动nginx服务
/usr/local/nginx/sbin/nginx	

netstat -lntp | grep 80

  • 查看PID进程号
cat /usr/local/nginx/logs/nginx.pid

##只有在运行时才能查看PID号

  • 停止nginx服务
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx

  • 重启nginx服务
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx

配置 Nginx 系统服务

方法一

vim /etc/init.d/nginx
	#!/bin/bash
	#chkconfig: - 99 20
	#description:Nginx Service Control Script
	COM="/usr/local/nginx/sbin/nginx"
	PID="/usr/local/nginx/logs/nginx.pid"
	case "$1" in
	start)
	  $COM
	;;
	
	stop)
	  kill -s QUIT $(cat $PID)
	;;
	
	restart)
	  $0 stop
	  $0 start
	;;
	
	reload)
	  kill -s HUP $(cat $PID)
	;;
	
	*)
	echo "Usage: $0 {start|stop|restart|reload}"
	exit 1
	
	esac
	exit 0


chmod +x /etc/init.d/nginx			#添加执行权限
chkconfig --add nginx							#添加为系统服务


systemctl start nginx

netstat -lntp | grep 80

方法二

vim /lib/systemd/system/nginx.service
	[Unit]
	Description=nginx
	After=network.target
	[Service]
	Type=forking
	PIDFile=/usr/local/nginx/logs/nginx.pid
	ExecStart=/usr/local/nginx/sbin/nginx
	ExecReload=/bin/kill -s HUP $MAINPID
	ExecStop=/bin/kill -s QUIT $MAINPID
	PrivateTmp=true
	[Install]
	WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service


systemctl start nginx.service
systemctl enable nginx.service

说明

[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务

[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

访问Nginx页面

浏览器访问:

http://<本机IP>:80

平滑升级Nginx

准备工作

  • 查看当前安装Nginx的版本及已模块
nginx -v			#查看当前安装的Nginx版本

nginx -V			#查看当前安装的Nginx已安装的模块

  • 下载新版本源码安装包,并上传至/opt目录下

  • 解压文件到当前目录

    cd /opt
    
    tar xf nginx-1.26.0.tar.gz
    
    ll
    

编译安装新版本Nginx

cd /opt/nginx-1.26.0/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_module

make


mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old		#备份老版本Nginx

cp objs/nginx /usr/local/nginx/sbin/nginx	#将新版本的Nginx移动到安装目录

make upgrade

#要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的,而不是通过查找环境变量中那个 nginx 命令启动的
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx

验证

  • 查看Nginx是否正常启动
	
	netstat -lntp | grep 80
	

  • 检查当前Nginx的版本
nginx -v

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx有哪些常规调优手段详解

    nginx有哪些常规调优手段详解

    性能调优就是用更少的资源提供更好的服务,成本利益最大化,下面这篇文章主要给大家介绍了关于nginx有哪些常规调优手段的相关资料,需要的朋友可以参考下
    2023-01-01
  • Nginx开启stub_status模块配置方法

    Nginx开启stub_status模块配置方法

    这篇文章主要介绍了Nginx开启stub_status模块配置方法,Nginx中的stub_status模块主要用于查看Nginx的一些状态信息,本文讲解它的开启配置方法,需要的朋友可以参考下
    2015-02-02
  • nginx basic认证的实现示例

    nginx basic认证的实现示例

    auth_basic作为一个认证模块,在apache和nginx中都很常用,本文主要介绍了nginx basic认证的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • ubuntu上配置Nginx+PHP5 FastCGI服务器配置

    ubuntu上配置Nginx+PHP5 FastCGI服务器配置

    ubuntu上配置Nginx+PHP5 FastCGI服务器配置方法, 需要的朋友可以参考下。
    2010-06-06
  • Nginx跨域访问配置方式(Web反向代理跨域访问配置)

    Nginx跨域访问配置方式(Web反向代理跨域访问配置)

    这篇文章主要介绍了Nginx跨域访问配置方式(Web反向代理跨域访问配置),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx 404反向代理的问题分析及解决

    Nginx 404反向代理的问题分析及解决

    Nginx反向代理404错误多因配置不当,需核查代理目标、上游服务器状态及文件路径,确保proxy_pass正确,文件权限充足,并及时备份配置
    2025-09-09
  • Nginx Proxy Manager配置Web WAF应用防火墙

    Nginx Proxy Manager配置Web WAF应用防火墙

    Nginx Proxy Manager是一款功能强大的开源软件,配置Web应用防火墙,可以防止常见的web攻击,本文就来介绍一下Nginx Proxy Manager配置Web WAF应用防火墙,感兴趣的可以了解一下
    2025-02-02
  • Nginx配置图片服务器(极简配置)

    Nginx配置图片服务器(极简配置)

    本文主要介绍了主要是Nginx做静态图片服务器的详情配置说明,还包括做反向代理、动静分离、负载均衡的极简配置,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Nginx和vue编译后的存放位置的配置实践

    Nginx和vue编译后的存放位置的配置实践

    这篇文章主要介绍了Nginx和vue编译后的存放位置的配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-09-09
  • centos8下安装nginx并修改其默认网页方式

    centos8下安装nginx并修改其默认网页方式

    本文介绍了在CentOS8系统中安装并启用nginx服务,调整防火墙设置,修改nginx默认主页,以及通过本地浏览器访问nginx页面的基本操作流程
    2025-10-10

最新评论