普通用户启动nginx

众所周知,linux 0-1024 端口是不允许非root权限用户占用的。

但是在linux中,因为安全问题,root用户禁止登陆服务器,而且又不给普通用户 sudo权限

这种情况下 nginx既要可以用普通用户启用,还要占用80端口

首先用普通用户 编辑安装nginx

目前我有三种解决方案:

方案一 SetUID

chmod u+s /usr/local/nginx/sbin/nginx

其实就是赋予这个nignx二进制文件,能够像在root下运行

优点是,方便简单,缺点是,既然sudo权限都不给了。这个set uid 最后也是让nginx运行在root权限下。 ps -ef |grep nginx 查看的时候,nginx的主进程是运行在root下的。 虽然是可以让普通用户运行nginx服务,但是不是所有nginx进程都在用户本身下运行

方案二:端口转发

因为0-1024 的端口不能被非root用户占用 ,我们可以把监听端口修改成1024以上的端口,然后用iptables进行端口转发,把80端口的包转发到 1024以上 我们自定义的端口

首先 打开 转发功能

sysctl -w net.ipv4.ip_forward=1

  1. iptables -F -t nat   #清空nat表
  2. iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to:8088  #nat表PREROUTING 链中插入转发规则

优点:可以用第三方用户直接启动,nginx的主进程就是用户本身来启动的。缺点,额外增加开销,负载低的情况可以,负载高了 就不太好了

方案三:

nginx内核 超过2.1版本以后 出现了能力的说法,

我们可以给/usr/local/nginx/sbin/nginx 赋予监听80端口的权限能力,

  1. setcap cap_net_bind_service =+ep /usr/local/nginx/sbin/nginx

这样就可以直接用普通用户启用nginx了。并且可以在高负载的情况下,减少由于端口转发部分的负载开销。

时间: 2024-11-05 18:52:38

普通用户启动nginx的相关文章

普通用户启动nginx服务

普通用户下启动nginx服务 创建普通用户 useradd lvnian010101 tail -5 /etc/passwd echo asdasd | passwd --stdin lvnian010101 ############## [[email protected] home]# useradd lvnian010101 [[email protected] home]# tail -5 /etc/passwd deng:x:500:500::/home/deng:/bin/bash

非root用户启动nginx master process

nginx启动进程可以在conf里指定user(user  work;)但是这个只有在用root启动的情况有意义,如果要是用非root用户比如www-data启动nginx,则需要注释掉use work:这行 /usr/sbin/nginx  -c /etc/nginx/nginx.conf 这样 www-data  41121      1  0 19:40 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/ngin

Linux 普通用户启动nginx

众所周知,apache的80端口为系统保留端口,如果通过其他非root用户启动,会报错如下: (13)Permission denied: make_sock: could not bind to address [::]:80 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open log

普通用户下启动Nginx服务

[普通用户下启动nginx服务] 1.创建普通用户 #useradd huazhixu #tail -5 /etc/passwd #echo 123456 | passwd --stdin huazhixu 2.切换进普通用户 #su - huazhixu 创建普通用户启动的nginx配置文件和站点目录等 $mkdir -p /home/huazhixu/conf/ $cp /usr/local/nginx/conf /home/huazhixu/conf  -ap $cp /usr/local

用普通用户运行nginx(安全优化)

一般情况下,我们在编译安装的时候会创建指定nginx来运行程序,但是nginx启动后它的master进程还是root,为了安全起见,我们要修改它的主进程,改为普通用户. 注意:普通进程就使用普通用户管理就可以,不要任何程序都使用root,一但出问题,很难搞! 检查:ps -ef 1.先创建一个普通用户: useradd nginx-soft 2.要想使用普通用户运行nginx 必须要将端口80更改,大于1024,此处使用8000: listen       8000; index路径修改: 日志

用低级别账户启动nginx报错的原因

nginx: [emerg] bind() to 0.0.0.0:80 failed (13: permission denied) 出现这种情况是因为 低于1024的端口号必须由root账户来启动进程并绑定端口,换成root账号启动nginx即可,反正nginx.conf里面是可以写user  www www; 来指定运行nginx的用户和用户组.

普通用户安装Nginx

一.安装前准备 安装包获取 Nginx网站http://nginx.org 下载软件版本包 目前主流版本为nginx-1.13.3   稳定版本为nginx-1.12.1,这里使用稳定版nginx-1.12.1 为例 1.安装pcre软件包 安装pcre库是为使Nginx支持HTTP rewrite模块 在Linux系统中查看pcre软件包是否已经安装,如果没有请事先安装好,在光盘里面可以使用rpm -ivh 安装 [[email protected] tmp]# rpm -qa | grep

linux非root用户安装nginx

先到官网http://nginx.org/en/download.html下载最新稳定版源码包,目前是1.16.1: 下完后通过rz上传至wlf用户soft目录下,退回上一级目录解压: $ cd soft $ rz -y rz waiting to receive. 开始 zmodem 传输. 按 Ctrl+C 取消. 100% 1008 KB 1008 KB/s 00:00:01 0 Errors $ cd .. $ tar xzvf soft/nginx-1.16.1.tar.gz 开始编译

linux 安装与启动nginx

linux系统为Centos 64位 一.去http://nginx.org/download/上下载相应的版本下载nginx-1.8.0.tar.gz(注:还有更高版本的). 二.解压 tar -zxvf nginx-1.8.0.tar.gz 三.进入nginx-1.8.0/文件夹,设置一下配置信息 ./configure --prefix=/usr/local/nginx(安装后的文件存放路径). 四.配置的时候可能会出现类似这样的信息 ./configure: error: the HTT