nginx解决 Permission-denied问题

一、解决Nginx报nginx: [emerg] bind() to 0.0.0.0:8006 failed (13: Permission denied)

  • 报错信息:nginx: [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)其中XXXX就是端口号。
  • 更改nginx启动端口,报错,权限被拒绝

解决方案

有两种方案

方案1、修改selinux 级别
  • 修改selinux 为关闭(停用)

  • 编辑/etc/selinux/config文件,设置SELINUX=disabled。之后将系统重启一下

    1
    2
    3
    4
    5
    6
    7

    # 如下命令查询selinux状态

    enforcing - 拒绝 SELinux security policy is enforced.

    permissive - 执行 SELinux prints warnings instead of enforcing.

    disabled - 停用 No SELinux policy is loaded.

    getenforce

方案二、更新受控端口

Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听。为叙述方便我们称之为受控端口。

1、查看HTTP 受控端口

1
2
3
4

# semanage port -l | grep http_port_t
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988

  • 默认http的开放端口有:80、81、443等8个

  • 由于nginx默认在80端口监听因此启动正常

  • 如上,我修改nginx启动端口为 8006 不在上面的范围内,所有报权限错误

  • 我们只需把我们想要启动的端口加到http_port_t即可,如下

    1
    2

    # 添加8006端口
    semanage port -a -t http_port_t -p tcp 8006

  • 修改完,重启nginx即可

2、安装使用semanage命令
  • semanage在CentOS上是默认不安装的

    1
    2
    3
    4
    5
    6
    7
    8

    # 直接使用yum安装
    yum install -y semanage

    如果上面提示No package semanage available ,可以试试

    yum provides semanage

    上面都不行就只能放大招了,保证可以

    yum -y install policycoreutils-python.x86_64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值