关于我安装nginx 到配置的全过程

安装nginx和配置的过程并不顺利,于是决定记录下来便于回顾。

安装nginx

万万没想到,安装的第一步就出了问题,当我输入yum install nginx命令时,返回了一个没有可用软件包的提示。

查阅知道,nginx在第三方的yum源,不在centos官方源里面。

于是yum install epel-release

epel-release 是Extra Packages for Enterprise Linux的缩写(企业Linux的额外软件包)。

这时候通过yum install nginx 就可以顺利下载安装 nginx了。

然后systemctl start nginxsystemctl enable nginx 启动nginx。

通过虚拟机的IP访问页面

nginx安装好后,一般就可以通过虚拟机的IP地址直接访问到由nginx默认配置下的页面。但直接访问一般还是访问不到的,这个时候还需要通过防火墙去开放80端口。

firewall-cmd --zone=public --add-port=22/tcp --permanent

firewall-cmd --reload

这个时候,再次访问就可以得到虚拟机返回的默认页面了。

配置nginx

通常来说,前端静态资源一般部署在 /var/www 目录下。于是我mkdir /var/www/html/home,并在该目录下通过 touch index.html 创建了一个html文件。

etc/nginx/conf.d下创建一个index.conf配置文件,

conf 复制代码
server {
  listen 80;
  server_name localhost;
  root /var/www/html/home;
}

正以为一切顺风顺水时,浏览器输入虚拟机的IP,却返回了403页面......

又只能一个一个排查问题了。

首先要知道403的状态码的含义,也就是说服务器接收到了请求,但拒绝执行。于是先确定一下是否目录访问权限的问题。

因为在nginx的默认配置下,nginx是以nginx角色进行线程操作,于是通过 ls -l 目标目录去查询文件夹和文件的权限。

可以知道drwxr-xr-x. 20 root root 278 4月 22 19:05 var ,通过修改组的方式,让nginx获取读取权限。

chown -R root:nginx /var

通过ls -l /命令发现/var下都已经修改成功。

于是再次访问,发现还是403,那就只能继续检索到底是什么问题了。

通过百度,可以知道nginx有一个自带的安全模块SELinux,负责强制访问控制机制。

修改/etc/selinux/config下的SELINUX=ENFORCINGSELINUX=disabled,保存退出,reboot重启系统。这个时候再去访问,发现可以正确获取到home/index.html了。

但是关闭SELinux是非常不安全的行为,只能通过改变SELinux的访问策略去让nginx通过。于是再次启动ESLinux并重启系统。

先检查SELinux的日志,grep nginx /var/log/audit/audit.log,可以知道nginx尝试访问,但被ESLinux拒绝。

这个时候可以使用 ls -Z来检查目标目录和内容的SElinux的上下文,确定他们被设置为正确的类型。

通常会获取到下面一串

drwxr-xr-x. root root system_u:object_r:var_t:s0

具体含义可以百度获取,我也半知半解。

一层一层检测下来,会发现,目标下的文件的类型与我们想要的不一样,正确的应为httpd_sys_content_t:s0而不是var_t:s0

于是我决定更改SELinux上下文类型

chcon -v --type=httpd_sys_content_t /var/www/html/home/index.html

当我再次访问的时候,终于正确访问到了我想要的网页。

更多的配置

如果html文件不是index.html,还可以通过index字段来指定目标文件。

ini 复制代码
server {
  listen 80;
  server_name localhost;
  root /var/www/html/home;
  index home.html;
}
相关推荐
一只小阿乐7 小时前
window 服务器上部署前端静态资源以及nginx 配置
运维·服务器·nginx
Linux运维技术栈8 小时前
Nginx 动静分离原理与工作机制详解:从架构优化到性能提升
运维·nginx·架构
墨苒孤1 天前
【Nginx】Nginx代理WebSocket
运维·websocket·nginx
苹果醋31 天前
Vue3组合式API应用:状态共享与逻辑复用最佳实践
java·运维·spring boot·mysql·nginx
华无丽言1 天前
如何简单实现发版不影响客户使用?nginx负载
linux·nginx
令狐少侠20111 天前
ai之对接电信ds后端服务,通过nginx代理转发https为http,对外请求,保持到达第三方后请求头不变
nginx·ai·https
DuelCode3 天前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
dyj0953 天前
【Rancher Server + Kubernets】- Nginx-ingress日志持久化至宿主机
运维·nginx·rancher
PanZonghui3 天前
Centos项目部署之Nginx部署项目
linux·nginx
Hellc0073 天前
Nginx 高级 CC 与 DDoS 防御策略指南
运维·nginx·ddos