使用普通用户启动Nginx
1.1让Nginx服务使用普通用户
默认情况下,Nginx的Master进程使用的是root用户,Worker进程使用的是Nginx指定的普通用户,使用root用户跑Nginx的Master进程有两个最大的问题
管理权限必须是root,这就使得最小化分配权限原则遇到难题
使用root跑Nginx服务,一旦网站出现漏洞,用户就可以很容易获得服务器的root权限
1.2 给Nginx服务降权解决方案
解决方案如下:
给Nginx服务维权,用inca用户跑Nginx服务,给开发及运维设置普通账号,只要和inca同组即可管理Nginx,该方案解决了Nginx管理问题,防止root分配权限过大。
开发人员使用普通账户即可管理Nginx服务以及站点下的程序和日志
采取项目负责制度,即谁负责项目维护出了问题就是谁负责
配置普通用户启动nginx
1)添加用户并创建相关目录
useradd inca
su -inca
pwd
mkdir conf logs www #创建三个目录
cp /applicaction/nginx/conf/mime.types ./conf/
echo inca > www/index.html
2)配置Nginx配置文件,配置后的查看命令如下:
vim conf/nginx.conf
修改路径 为普通用户下的路径
worker_processes 4;
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 /home/inca/conf/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
root /home/inca/www;
location / {
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
access_log /home/inca/logs/access.log;
}
}
说明:
所有参数的值带路径的都要改成/home/inca
特权用户root使用的80端口,改为普通用户使用的端口,在1024以上,上面使用8080
启动nginx,命令如下
全路径启动nginx -c参数使用指定的配置文件而不是conf目录下的nginx.conf
/application/nginx/sbin/nginx -c /home/inca/conf/nginx.conf &>/dev/null
ps -ef | grep nginx | grep -v grep
访问效果:
1.3 解决普通端口非80提高服务的问题
用负载均衡器解决Web服务非80端口的转换问题,负载均衡器可用Haproxy,F5等
本解决方案的优点如下:
给Nginx服务降权,让网站更安全 按用户设置站点权限,使站点更独立(无需虚拟化隔离) 开发不需要用root即可完成管理服务及站点 可实现对责任划分:网络问题属于运维的责任,网站打不开就是开发责任或共同承担
我是用nginx的转发功能实现的 把端口转到80端口
80端口的nginx配置转发功能: