解决nginx转发请求异常的解决办法

安全增强型Linux(SELinux)是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制。本文介绍如何开启或关闭SELinux,并且避免系统无法启动的问题。

前提条件

已使用阿里云公共镜像或者自定义镜像创建了ECS实例。

说明 如果自定义镜像是通过服务器迁移中心SMC,由源服务器迁移产生的镜像,或者是您导入的本地镜像文件,请确保迁移前源服务器中的SELinux是禁用状态。

背景信息

一般情况下,开启SELinux会提高系统的安全性,但是会破坏操作系统的文件,造成系统无法启动的问题。如果您所在的企业或团队具有十分严格的安全策略,要求在Linux操作系统中开启SELinux,您可以参考本文的步骤开启,避免系统无法启动的问题。本教程使用的操作系统为:CentOS 7.2 64位。

开启SELinux

  1. 以root权限远程连接ECS实例。连接方式请参见连接方式概述
  2. 在ECS实例上运行以下命令,编辑SELinux的

config

  1. 文件。
vi /etc/selinux/config
  1. 找到

SELINUX=disabled

  1. ,按

i

  1. 进入编辑模式,通过修改该参数开启SELinux。

您可以根据需求修改参数,开启SELinux有以下两种模式:

  • 强制模式

SELINUX=enforcing

  • :表示所有违反安全策略的行为都将被禁止。
  • 宽容模式

SELINUX=permissive

  • :表示所有违反安全策略的行为不被禁止,但是会在日志中作记录。
  1. 修改完成后,按下键盘

Esc

  1. 键,执行命令

:wq

  1. ,保存并退出文件。 说明 修改config文件后,需要重启实例,但直接重启实例将会出现系统无法启动的错误。因此在重启之前需要在根目录下新建autorelabel文件。
  2. 在根目录下新建隐藏文件

autorelabel

  1. ,实例重启后,SELinux会自动重新标记所有系统文件。
touch /.autorelabel
  1. 重启ECS实例。
shutdown -r now

验证SELinux状态

  1. 以root权限远程连接ECS实例。连接方式请参见连接方式概述
  2. 运行命令

getenforce

  1. ,验证SELinux状态。 返回状态应为

enforcing

  1. 或者

permissive

  1. ,本教程当前状态为

enforcing

  1. 运行命令

sestatus

  1. ,获取更多SELinux信息。

参数信息SELinux status显示为enabled,表示SELinux已启动。

关闭SELinux

  1. 以root权限远程连接ECS实例。连接方式请参见连接方式概述
  2. 运行命令

getenforce

  1. ,验证SELinux状态。 返回状态如果是

enforcing

  1. ,表明SELinux已开启。
  2. 选择临时关闭或者永久关闭SELinux。
  • 执行命令

setenforce 0

  • 临时关闭SELinux。
  • 永久关闭SElinux。
  1. 运行以下命令,编辑SELinux的

config

  1. 文件。
vi /etc/selinux/config
  1. 找到

SELINUX=enforcing

  1. ,按

i

  1. 进入编辑模式,将参数修改为

SELINUX=disabled

  1. 修改完成后,按下键盘

Esc

  1. 键,执行命令

:wq

  1. ,保存并退出文件。
  2. 重启ECS实例。
shutdown -r now
  1. 重启后,运行命令

getenforce

  1. ,验证SELinux状态为

disabled

  1. ,表明SELinux已关闭。

后续步骤

您可以通过已启动SELinux的ECS实例创建自定义镜像。在您需要的时候,直接通过该镜像创建已启动SELinux的ECS实例。