热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

以非root用户身份运行Nginx

如何解决《以非root用户身份运行Nginx》经验,为你挑选了2个好方法。

我使用Ansible安装了Nginx.要在Centos7上安装,我使用了yum软件包,因此它默认以root用户身份运行.我希望它在Centos框中以不同的用户(ex- nginx用户)启动和运行.当我尝试使用其他用户运行它时,我收到以下错误:

nginx.service的作业失败,因为控制进程退出并显示错误代码.有关详细信息,请参阅"systemctl status nginx.service"和"journalctl -xe".

我知道以root身份运行是不可取的.那么我该如何解决这个问题并以非root用户身份运行nginx.谢谢



1> Farhad Farah..:

添加/更改以下内容/etc/nginx/nginx.conf:

user nginx;

您应该创建用户并以递归方式授予webroot目录的权限.

这种方式只有主进程运行为root.因为:只有root进程可以侦听1024以下的端口.Web服务器通常在端口80和/或443上运行.这意味着它需要以root身份启动.

以非root用户身份运行master进程:

更改以下所有权:

error_log中

访问日志

PID

client_body_temp_path

fastcgi_temp_path

proxy_temp_path

scgi_temp_path

uwsgi_temp_path

将listen指令更改为1024以上的端口,以所需用户身份登录并运行nginx nginx -c /path/to/nginx.conf



2> 小智..:

为了以防万一,出于测试/调试的目的,有时我会以非特权用户身份在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


推荐阅读
author-avatar
焦作艾文斯
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有