我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误:
nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“journalctl-xe”。
我知道以root身份运行是不可取的。那么我如何绕过这个问题并以非root用户身份运行nginx。谢谢
为了防止2020年有人在这个问题上绊倒,这里是我的最小nginx。conf用于在端口8088上运行web服务器,适用于非root用户。无需修改文件权限!(使用nginx 1.16.1在Centos 7.4上测试)
error_log /tmp/error.log;
pid /tmp/nginx.pid;
events {
# No special events for this simple setup
}
http {
server {
listen 8088;
server_name localhost;
# Set a number of log, temp and cache file options that will otherwise
# default to restricted locations accessible only to root.
access_log /tmp/nginx_host.access.log;
client_body_temp_path /tmp/client_body;
fastcgi_temp_path /tmp/fastcgi_temp;
proxy_temp_path /tmp/proxy_temp;
scgi_temp_path /tmp/scgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
# Serve local files
location / {
root /home/<your_user>/web;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
}
以防万一,出于测试/调试目的,我有时会在我的Debian(拉伸)笔记本电脑上以非特权用户身份运行nginx实例。
我使用一个最小的配置文件,如下所示:
worker_processes 1;
error_log stderr;
daemon off;
pid nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log access.log;
server {
listen 8080;
server_name localhost;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass localhost:8081;
}
}
}
我从以下几个方面开始这个过程:
/usr/sbin/nginx -c nginx.conf -p $PWD
在/etc/nginx/nginx中添加/更改以下内容。形态
:
user nginx;
您应该递归地创建用户并授予对webroot目录的权限。
这样,只有主进程才能作为根运行。因为:只有根进程可以侦听1024以下的端口。Web服务器通常在端口80和/或443上运行。这意味着它需要以root启动。
以非root用户身份运行master进程:
更改以下内容的所有权:
错误日志
- 访问日志
- pid
- 客户_身体_温度_路径
- 快速CGI_temp_路径
- 代理临时路径
- scgi_临时路径
- uwsgi_临时路径
将listen指令更改为1024以上的端口,根据需要的用户登录并通过
nginx-c/path/to/nginx运行nginx。形态
本文向大家介绍以非root用户身份运行Docker容器,包括了以非root用户身份运行Docker容器的使用技巧和注意事项,需要的朋友参考一下 当您在Docker容器中运行应用程序时,默认情况下,它有权访问所有root特权。您可能已经注意到,当打开Ubuntu Docker Container Bash时,默认情况下您以root用户身份登录。在应用程序的安全性方面,这可能是一个主要问题。任何局外人
问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的
我正在Docker中制作python Django应用程序的简单图像。但是在构建容器的末尾,它抛出了下一个警告(我正在Ubuntu 20.04上构建):
我正在尝试以root用户身份运行脚本。这是我的密码 它在出错 我也遵循了这些方法,但最终出现了错误
问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的
问题内容: 在构建Docker映像时,如何将文件添加到映像中,以便生成的文件由root以外的用户拥有? 问题答案: 对于v17.09.0-ce及更高版本 将可选标志与或命令一起使用。 例如 --chown标志的文档现在位于Dockerfile参考主页面上。 版本 34263 已被合并,可以在v17.09.0-ce版本中使用。 对于v17.09.0-ce之前的版本 Docker不以root用户身份支