使普通用户启动nginx(监牢模式)

为什么给nginx服务使用普通用户:

默认情况下nginx的Master进程使用的用户root,worker进程使用的是nginx指定的普通用户,使用root用户跑nginx的master进程有两个问题。

1.管理用户必须是root,这样使的最小化分配权限遇到问题

2.使root跑nginx服务,一旦网站出现了漏洞,用户就可以轻松的获得服务器的root权限。

 

配置实战:

1.常见普通用户,通过普通用户启动nginx:

#useradd inca

#su - inca

#pwd

#mkdir conf logs www

#cp /application/nginx/conf/mime.types ~/conf

#echo inca > www/index.html

---------------------------------------------------------------

2.配置nginx配置文件

#cat conf/nginx.conf

worker_processes 1;

worker_rlimit_nofile 65535;

error_log /home/inca/logs/error.log;

user inca inca;

pid /home/inca/logs/nginx.pid;

 

events {

use epoll;

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

 

server {

listen 8990;

server_name www.ofo.com;

root /home/inca/www;

location / {

index index.html index.php index.htm;

}

access_log /home/inca/logs/web_access.log;

}

}

#LANG=en

#tree

|-- conf

| |-- mime.types

| `-- nginx.conf

|-- logs

| |-- error.log

| |-- nginx.pid

| `-- web_access.log

`-- www

`-- index.html

简单说明:

需要单独制定pid,用户。location下的目录,以及默认网站根目录所有参数的值要配置到/home/inca用户家目录下

特权用户root使用的80端口,改为普通用户使用的端口,在1024以上

启动nginx:

# ps -ef |grep nginx |grep -v grep

#/applocation/nginx/sbin/nginx -c /home/inca/conf/nginx.conf <以root启动吧,要不又报错

#ps -ef |grep nginx |grep -v grep

inca 4210 1 0 15:23 ? 00:00:00 nginx: master process /applocation/nginx/sbin/nginx -c /home/inca/conf/nginx.conf

inca 4211 4210 0 15:23 ? 00:00:00 nginx: worker process

#lsof -i :8990

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

nginx 4210 inca 5u IPv4 19061 0t0 TCP *:http-wmap (LISTEN)

nginx 4211 inca 5u IPv4 19061 0t0 TCP *:http-wmap (LISTEN)

配置好客户端进行测试:

[root@localhost ~]# curl 192.168.1.251:8990/index.html

inca

解决普通端口非80提供问题。

可以通过负载均衡web服务进行转换。可以haproxy nginx f5等

本次解决方案优点;

给nginx服务降权,让网站更安全

按用户设置站点权限,让站点更安全

不必要给几把开发root权限

可实现责任划分(划重点)

你可能感兴趣的:(nginx)