1. 前言
user 指令用于配置运行 nginx 服务器的 worker 进程的用户和用户组,这样对于系统权限的访问控制更加精细和安全
如果你修改过 nginx.conf,那么就会看到文件第一行的 user 指令配置,默认是被注释掉的(默认使用 nobody 用户)
# 查看 nginx.conf 前三行
cat /usr/local/nginx/conf/nginx.conf | head -n 3
2. 配置文件
语法:
# user_name 用户名
# group_name 用户组(可省略,省略时使用和用户名名称相同的组,一般都会省略)
user user_name [group_name];
接下来,我们通过 nginx.conf 配置文件指定 worker 进程的启动用户
第一步:创建 www 用户
useradd www;
第二步:打开 nginx.conf,修改 user 指令配置
# 去除 user 指令的注释,将 nobody 修改为 www
vim /usr/local/nginx/conf/nginx.conf
# 查看 nginx.conf 前三行,确认修改成功
cat /usr/local/nginx/conf/nginx.conf | head -n 3
# 重载配置
/usr/local/nginx/sbin/nginx -s reload
第三步:创建 /root/html/index.html
页面,添加以下内容
mkdir /root/html
vim /root/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>欢迎使用 Nginx !</title>
<meta charset="UTF-8">
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>欢迎使用 Nginx !</h1>
<p>如果您看到此页面,则表明 nginx web 服务器已成功安装并运行。</p>
<p><em>感谢您使用 nginx。</em></p>
</body>
</html>
第四步:修改 nginx.conf,将默认的站点目录 html
,修改为 /root/html
location / {
root /root/html;
index index.html index.htm;
}
# 重载配置
/usr/local/nginx/sbin/nginx -s reload
第五步:测试访问,发现 403 Forbidden 错误
这是因为 worker 进程的启动用户是 www,但是 www 用户没有访问 /root/html 目录的权限
第六步:将站点目录复制到 /home/www
下,这是 www 用户的家目录,当然是有权限的
cp -r /root/html /home/www
修改 nginx.conf,将站点目录 /root/html
,修改为 /home/www/html
location / {
root /home/www/html;
index index.html index.htm;
}
# 重载配置
/usr/local/nginx/sbin/nginx -s reload
再访问就发现可以正常显示了
3. 编译参数
user 指令也可以在编译的时候设置,如果配置文件和编译安装时都指定了该参数,生效的是配置文件中的配置
./configure --user=USER --group=GROUP
编译时即使指定了该参数,配置文件中的内容还是被注释掉的 nobody 用户,这是正常的
# 参数配置
./configure --prefix=/usr/local/nginx --user=www
# 查看配置文件内容和进程启动用户
/usr/local/nginx/sbin/nginx -V
cat /usr/local/nginx/conf/nginx.conf | head -n 3
ps -ef | grep nginx