关于我安装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;
}
相关推荐
llm大模型算法工程师weng21 小时前
负载均衡做什么?nginx是什么
运维·开发语言·nginx·负载均衡
fTiN CAPA21 小时前
服务器无故nginx异常关闭之kauditd0 kswapd0挖矿病毒 CPU占用200% 内存耗尽
运维·服务器·nginx
lKWO OMET1 天前
查看 nginx 是否已经启动
运维·数据库·nginx
ywlovecjy1 天前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
hutengyi1 天前
四、nginx的优化和location匹配规则
运维·nginx
eEKI DAND1 天前
一个比 Nginx 还简单的 Web 服务器
服务器·前端·nginx
Watermelo6172 天前
理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
前端·javascript·vue.js·chrome·nginx·正则表达式·seo
Cyber4K2 天前
【Nginx专项】高级进阶架构篇-Location、Rewrite及HTTPS
服务器·nginx·架构·https
博风2 天前
nginx:前后端分离常用配置
nginx
七七powerful2 天前
Nginx 日志切割完全指南:从原理到生产实战
运维·nginx