一、为什么需要创建专用Nginx用户?
在Linux系统中,为服务创建独立的运行用户是安全最佳实践。Nginx默认以nobody
用户运行,但通过创建专用用户nginx
,可以限制其权限,防止潜在的安全漏洞影响系统其他部分。
操作步骤:
# 创建不可登录的nginx用户(-M不创建家目录,-s指定不可登录的Shell)
useradd nginx -s /sbin/nologin -M
二、安装前的依赖准备
Nginx编译依赖多个开发库,缺一不可。以下是核心依赖包的作用:
- pcre-devel:正则表达式支持(用于URL重写)
- openssl-devel:启用HTTPS协议(SSL/TLS加密)
- zlib-devel:Gzip压缩功能
一键安装依赖:
yum -y install openssl openssl-devel pcre-devel zlib-devel
注:若缺少依赖,编译时会报错提示缺少的库文件。
三、源码编译与安装
- 解压源码包
tar zxf nginx-1.20.1.tar.gz
cd nginx-1.20.1/
- 配置编译参数(关键!)
./configure \
--prefix=/usr/local/nginx \ # 安装目录
--user=nginx \ # 运行用户
--group=nginx \ # 运行组
--with-http_ssl_module \ # 启用HTTPS
--with-stream \ # TCP/UDP反向代理
--with-mail \ # 邮件代理支持
--with-mail_ssl_module # 邮件SSL加密
参数解读:
--with-stream
:允许Nginx代理TCP/UDP协议(如数据库连接)--with-http_ssl_module
:必须启用,否则无法配置SSL证书
- 编译并安装
make && make install
编译时间约1-3分钟,若出现make: *** No targets specified.
错误,说明configure配置失败,需检查依赖是否完整。
四、安装后验证与启动
- 检查安装目录
ls /usr/local/nginx/
# 输出应有conf(配置)、html(网页)、logs(日志)、sbin(可执行文件)
- 启动Nginx
/usr/local/nginx/sbin/nginx
- 验证服务状态
ps -ef | grep nginx
# 应看到1个master进程和多个worker进程
curl http://localhost
# 若返回Welcome to nginx!则成功
五、高级配置技巧
- 开机自启动(Systemd服务)
创建/usr/lib/systemd/system/nginx.service
文件:
[Unit]
Description=nginx service
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 quit
PrivateTmp=true[Install]
WantedBy=multi-user.target
执行:
systemctl daemon-reload
systemctl enable nginx
- 配置文件语法检查
/usr/local/nginx/sbin/nginx -t
# 输出应为"successful"(避免配置错误导致服务崩溃)
六、常见问题解决
- 端口占用:若80端口被占用,修改
/usr/local/nginx/conf/nginx.conf
中的listen
端口号。 - 权限问题:确保
/usr/local/nginx
目录属于nginx
用户:
chown -R nginx:nginx /usr/local/nginx
- 模块遗漏:若需新增模块(如HTTP/2),需重新configure并编译,不可直接覆盖安装。
七、为什么推荐源码安装?
- 灵活性:可自定义模块(如第三方模块
ngx_lua
) - 性能优化:针对服务器CPU架构优化编译参数
- 版本控制:自由选择稳定版或尝鲜新特性
参考文档:
- Nginx官方编译指南
- CentOS 7系统权限管理最佳实践
原创声明:转载请保留原文链接,禁止用于商业用途。