NGINX 源码构建
下载源码及相关依赖
1 | # nginx源码 |
构建指令
根据实际情况自行修改,见 nginx中文文档
进入 nginx 解压路径,执行下述指令升成 Makefile
1 | ./configure \ |
由于我部署时,服务器已经具有
zlib
环境,因此不添加该参数。
编译安装
1 | make&&make install |
完成后可以在 --prefix
参数指定的路径下看见 nginx-1.24.0
。
检查是否部署成功
1 | # 进入二进制文件所在路径 |
访问 http://IP
,查看是否显示 nginx 欢迎页。
权限设置
使用 root 用户运行 nginx 不符合最小授权原则。应该使用非 root 帐号来运行,即使该进程被攻击,植入了恶意代码,但恶意代码拥有的权限有限,无法对整个系统造成破坏。
添加 nginx 用户组并授予必要权限
1 | # 创建 nginx 组 |
通过 Linux Capabilities 使普通用户具备部分 root 权限,此处所需权限为 CAP_NET_BIND_SERVICE
,即允许绑定到小于1024的端口:
1 | setcap cap_net_bind_service=+ep /usr/local/nginx-1.24.0/sbin/nginx |
请注意,能力应该授予给源文件,而不是符号链接,否则会报错
1 | Failed to set capabilities on file `/usr/local/bin/nginx' (Invalid argument) |
检查能力授予情况
1 | getcap /usr/local/nginx-1.24.0/sbin/nginx |
创建符号链接,使得不用每次都进入 nginx 根路径执行命令
1 | ln -s /usr/local/nginx-1.24.0/sbin/nginx /usr/local/bin/nginx |
创建成功后,可以发现在 /usr/local/bin
下新增了一个 nginx
。
使用普通用户登录服务器,尝试在任意路径下执行 nginx
。如提示无权限,修改符号链接的所属组为 nginx
:
1 | chown root:nginx /usr/local/bin/nginx |
如果报错 nginx: [emerg] open() "/usr/local/nginx-1.24.0/logs/nginx.pid" failed (13: Permission denied)
,可以尝试删除 nginx.pid
或者手动修改其权限为组可写。
nginx 指令
1 | # 启动nginx |
修改配置文件后,只需要 reload
即可生效。除非有异常情况,才需要先 stop
再 reload
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 日勿の部落格!