关于我安装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;
}
相关推荐
百度一下吧8 小时前
Nginx 使用手册:从安装配置到实战部署
运维·nginx
JAVA面经实录91720 小时前
Java高级后端 · 全套面试通关手册(Nginx)
java·nginx·面试
lpfasd1233 天前
WinSW在Win7上失败真相-实测与修复
windows·nginx
lpfasd1233 天前
nginx服务化五套方案原理解剖与选型
运维·nginx
ue星空3 天前
ALS V4 中文拆解手册
运维·nginx
吴声子夜歌4 天前
Nginx应用与运维——Nginx集群负载与配置管理(二)
运维·nginx
cpolar技术支持4 天前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
吴声子夜歌4 天前
Nginx应用与运维——Nginx在Kubernetes中的应用(一)
运维·nginx·kubernetes
螺蛳粉 螺蛳粉4 天前
第一篇:Keepalived 高可用实战:VIP 漂移与 Nginx 主备切换完整指南
运维·nginx·负载均衡·keepalived·高可用
吴声子夜歌4 天前
Nginx应用与运维——Nginx在Kubernetes中的应用(三)
运维·nginx·kubernetes