【Nginx】使用普通用户安装和运行Nginx经验分享

各位做运维的小伙伴在日常工作中,可能都会习惯性的使用 root 超级用户来安装和运行 Nginx。但是,如果所在的公司有安全部门,他们就可能会强烈的建议你将 Nginx 的运行用户整改为普通用户,来提升系统的安全性。下面我来分享下自己整改的一个过程和细节经验。

Nginx 的安装是需要使用 root 超级用户的,但是我们可以在安装命令中添加参数,让 Nginx 被安装到指定的用户和组(如 app 用户、app 组)目录下。

安装命令如下:

objectivec 复制代码
./configure --prefix=/data/nginx --user=app --group=app
make
make install

备注:如果之前已经安装过nginx,编译的参数建议和原先的参数(可以使用 ./nginx -V 命令来查看)保持一致,即在原参数的基础上增加 --user--group 参数。

安装完成以后,还需要将 nginx.conf 配置文件中的第一行设置为 app 用户和组,并将默认的 80 监听端口,修改为 1024 以上的端口(如下所示),否则使用普通启动 Nginx 时会报错、无法启动。

复制代码
user app app;
...
http{
    ...
    server{
        listen 1026;
        ...
    }
}

上面这种,是最简单的一种情况。

但是,如果当你的软负载环境使用了 Keepalived + Nginx 来实现双机主备,那整改起来就相对复杂一点了。因为 Keepalived 一般都是使用 root 超级用户来安装和运行的,而且我们还会将 Keepalived 注册为 Linux 系统的一个服务,即让 Keepalived 服务随操作系统一起停、启,来实现宕机后 Keepalived 服务的自动拉起。同时,我们还会在 Keepalived 的主配置里面设置自动监控 Nginx 进程的配置,即监测到 Nginx 进程不存在,Keepalived 就会通过配置信息以及对应的脚本自动拉起 Nginx 进程。

这样就会带来一个问题,虽然我们已经将 Nginx 安装到了普通用户和组下了,但是 Keepalived 拉起后的 Nginx 进程会出现一个问题,即 master 进程是 root 超级用户,而 worker 进程是普通用户。另外, Nginx 的 pid 文件也会变成 root 超级用户和组权限,而 Nginx 的主执行程序是普通用户和组,就无法去执行配置校验和热加载。

这个时候,我们就需要对安装在普通用户和组下面的 Nginx 的主程序的权限进行改造,来让普通用户也有权限去执行配置校验和热加载。

上面这几段文字看起来有点绕,但是也是我们在生产环境比较常见的一种情况,希望各位小伙伴能耐心的看完,并且能理解其中的含义。

下面我们就需要对 Nginx 的主程序的权限进行改造,很简单的几行命令:

objectivec 复制代码
$ cd /data/nginx/sbin/

// 设置nginx主程序的用户和组权限为root
$ chown root:root ./nginx

// 设置nginx主程序的权限为755
# chmod 755 ./nginx

// 设置nginx主程序在普通用户权限下具备执行root权限的功能
$ chmod u+s ./nginx

// 修改后的权限
# ls -ltr /data/nginx/sbin/
-rwsr-xr-x 1 root root 7145848 Feb 29 10:36 nginx

备注:这样整改以后,大家会发现使用netstat -tnlp| grep master_pid来查看端口,会发现没有数据返回了,这个时候就需要使用第一个 worker 进程的 pid 来匹配和查看即可,也就是所有代理的后端业务的应用端口都已经使用普通用户和组来运行了。

相关推荐
安全系统学习1 小时前
【网络安全】Mysql注入中锁机制
安全·web安全·网络安全·渗透测试·xss
物联网老王2 小时前
Ubuntu Linux Cursor 安装与使用一
linux·运维·ubuntu
艾伦_耶格宇3 小时前
【ACP】阿里云云计算高级运维工程师--ACP
运维·阿里云·云计算
一位摩羯座DBA4 小时前
Redhat&Centos挂载镜像
linux·运维·centos
charlee444 小时前
nginx部署发布Vite项目
nginx·性能优化·https·部署·vite
cui_win5 小时前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络
风清再凯5 小时前
自动化工具ansible,以及playbook剧本
运维·自动化·ansible
深圳安锐科技有限公司5 小时前
深圳安锐科技发布国内首款4G 索力仪!让斜拉桥索力自动化监测更精准高效
运维·安全·自动化·自动化监测·人工监测·桥梁监测·索力监测
猫头虎5 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
潘锦5 小时前
海量「免费」的 OPENAI KEY,你敢用吗?
安全·openai