关于我安装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 nginx 和 systemctl 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=ENFORCING 为 SELINUX=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;
}
相关推荐
Java码农也是农17 小时前
一篇文章讲清 NGINX 反向代理:location、proxy_pass、负载均衡与排错
nginx·负载均衡·后端开发·反向代理·proxy_pass
李纲明1 天前
WordPress 打开页面直接报 500 而不是白屏:先核伪静态与文件权限,再查服务器错误日志
nginx·wordpress·文件权限·伪静态·错误日志·devdiy·500错误
Csvn3 天前
Nginx 配置语法与上下文:一次搞懂继承、变量与用 map 替掉 if
后端·nginx
Csvn5 天前
安装、升级与目录结构
后端·nginx
Csvn7 天前
认识 Nginx
后端·nginx
陈希1238 天前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
木头左8 天前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
skywalk81638 天前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
没差c9 天前
winsw将jar、nginx等注册为Windows服务
windows·nginx·jar
Lsetea11 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书