Hexo部署到云服务器后CSS样式无效的问题

Hexo部署到云服务器后CSS样式无效的问题

01 前言

趁活动入手了一个云服务器(Linux),打算简单挂个博客上去,因为之前部署到github有了一些经验,所以还是选择使用Hexo。中间步骤略,部署完使用浏览器访问的时候,碰到一个比较诡异的现象:文字、图案等内容是有了,但是只是直接简单罗列出来的,CSS样式没有生效!
于是先F12简单检查一下浏览器网络请求情况,发现CSS文件请求也是正常的,也正常返回来内容了,但是就是没有渲染到页面!
就像这样:
样式无效

查了一通资料,Hexo配置文件也折腾了一番,还是没有解决。最后认真对比了一下跟GitHub的部署的那套有啥区别之后,发现原来坑是在NGINX代理上。

02 正文

相关软件版本如下:

Nginx:1.18.0
Hexo:7.0.0
Hexo 主题:butterfly,4.11.0

假设博客根目录为:/usr/local/example,先生成静态资源:

hexo clean && hexo g

然后就顺利生成public文件夹了,直接上NGINX代理。
接着,NGINX配置大概是这样的:

http {default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen 80;server_name example.com;location / {expires 1h;gzip on;root /usr/local/example/public;index index.html;}}
}
events {worker_connections  1024;use epoll;
}

注意default_type,设置了默认文件类型是:application/octet-stream,这样会导致返回的CSS、JS等文件,Content-Type类型都是:application/octet-stream,虽然文件内容是请求回来了,但是由于文件类型未被浏览器正确识别(或者说浏览器不知道请求回来的XXX.css就是样式文件,XXXX.js就是JavaScript脚本文件),所以没有渲染到页面上!

认真看网络请求中的响应标头的Content-Type,确实是这样:
响应类型

找到了原因,那就好解决了,让不同类型的文件返回时Content-Type类型是对应的文件标识,比如css样式文件,返回类型应该是:text/css,而js文件,返回类型应该是:application/javascript,其他类型文件类似。

结合NGINX官方文档,可知用types来定义返回的文件类型标识,于是将NGINX配置文件修改如下:

http {sendfile        on;keepalive_timeout  65;server {listen 80;server_name example.com;location / {expires 1h;gzip on;root /usr/local/example/public;index index.html;types {text/html  html;image/gif  gif;image/jpeg jpg;image/png  png;image/vnd.microsoft.icon  ico;text/css   css;application/javascript  js;}default_type application/octet-stream;}}
}
events {worker_connections  1024;use epoll;
}

重启NGINX,搞定。
正常

03 后记

算是一个简单的问题,记录一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HT4125 低压CMOS 缓冲门器件 单电源电压转换

​​亿胜盈科HT4125 是一款低压CMOS 缓冲门器件,可运行在针对便携式和电池设备的更宽电压范围内。 其采用了较低阀值电路来设计此输入,以便匹配Vcc 3.3V 时的1.8V 输入逻辑,并且可被用 在1.8V 至3.3V 电平上行转换器功能中。此外,…

RabbitMQ的详细使用

消息队列RabbitMQ的详细使用 文章目录 消息队列RabbitMQ的详细使用MQ 的相关概念什么是MQ为什么要用MQMQ 的分类MQ 的选择 RabbitMQRabbitMQ 的概念四大核心概念各个名词介绍安装RabbitMQWeb管理界面及授权操作Docker 安装 Hello world简单示例 Work Queues轮训分发消息消息应答…

用友时空 KSOA 多处SQL注入漏洞复现

0x01 产品简介 用友时空 KSOA 是建立在 SOA 理念指导下研发的新一代产品,是根据流通企业前沿的 IT 需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的 IT 系统之间彼此轻松对话。 0x02 漏洞概述 用友时空 KSOA 系统 PayBill、QueryService、linkadd.jsp等接口处…

如何在Android中旋转屏幕时避免重新绘制Activity

如何在Android中旋转屏幕时避免重新绘制Activity 在Android开发中,设备旋转通常导致当前活动(Activity)被销毁并重新创建,这可能导致用户界面重置和不必要的资源重新加载。然而,有时我们希望避免这种行为,…

GBDT介绍

GBDT介绍 GBDT(Gradient Boosting Decision Tree),即梯度提升决策树,是一种常用的机器学习算法,属于集成学习方法中的Boosting类算法。GBDT主要用于回归和分类问题,通过结合多个决策树来构建一个更为强大的…

Leetcode69 x的平方根

x的平方根 题解1 袖珍计算器算法题解2 二分查找题解3 牛顿迭代 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符&…

配置文件中的$和@

配置文件中的$和 0、前言 借鉴文章: https://blog.csdn.net/Saintmm/article/details/124603343 https://blog.csdn.net/ster_ben/article/details/119295815在yml配置文件中,可以使用${}和{}来引用其他配置项的值作为配置项的值。 spring:applicati…

复旦微用AXIDMA接收原始图像

参考SD卡移植博客&#xff0c;&#xff0c;移植SD卡相应代码 AXIDMA部分Demo下的bsp包整个pl搬到相应位置&#xff0c;添加相应文件 #include <stdio.h> #include <stdlib.h> #include "platform.h" #include "fmsh_common.h" #include "…

CentOS 7 部署frp穿透内网

本文将介绍如何在CentOS 7.9上部署frp&#xff0c;并通过示例展示如何配置和测试内网穿透。 文章目录 &#xff08;1&#xff09;引言&#xff08;2&#xff09;准备工作&#xff08;4&#xff09;frps服务器端配置&#xff08;5&#xff09;frpc客户端配置&#xff08;6&#…

【Linux】进程和环境变量

我们启动一个软件&#xff0c;本质就是启动一个进程 在Linux下&#xff0c;运行一条命令&#xff0c;运行的时候&#xff0c;其实就是在系统层面创建了一个进程 而Linux系统管理大量进程则是先描述&#xff0c;再组织 进程 对应的代码和数据 进程等对应的PCB结构体 PCB包含了…

深度优先搜索LeetCode979. 在二叉树中分配硬币

给你一个有 n 个结点的二叉树的根结点 root &#xff0c;其中树中每个结点 node 都对应有 node.val 枚硬币。整棵树上一共有 n 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&#xff0c;然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到…

postman接口测试系列: 时间戳和加密

在使用postman进行接口测试的时候&#xff0c;对于有些接口字段需要时间戳加密&#xff0c;这个时候我们就遇到2个问题&#xff0c;其一是接口中的时间戳如何得到&#xff1f;其二就是对于现在常用的md5加密操作如何在postman中使用代码实现呢&#xff1f; 下面我们以一个具体的…

【ZeroMQ(ZMQ)】高速并发通信框架学习笔记(C风格、C++风格都有哦)

目录 官方文档&#xff1a; ZeroMQ An open-source universal messaging library 前言 ☘️ ZeroMQ——基于消息队列模式的Socket库 框架提供的套接字可以满足在多种协议之间传输原子信息&#xff0c;如线程间、进程间、TCP、广播等。 ZMQ将消息通信分成 4 种模型&#xff0c…

JavaEE之多线程编程:2.创建线程及Thread类常见方法(超全!!!)

一、创建线程 Java中创建线程的写法有很多种&#xff01;&#xff01;&#xff01;这里介绍其中5种。 方法1&#xff1a;继承Thread类&#xff0c;重写run 创建一个类&#xff0c;让这个类继承自Thread父类&#xff0c;再重写我们的run方法就可以了。 使用Thread类&#xff…

MYsql第三次作业

目录 问题&#xff1a; 解答 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#xff08;id&#xff09;、姓名&#xff08;name&#xff09;和院系&#xff08;department&#xff09;的信息 4.从student表中查询计算机系和…

智能优化算法应用:基于鸽群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鸽群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鸽群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸽群算法4.实验参数设定5.算法结果6.参考文献7.MA…

EdgeYOLO: anchor-free,边缘部署友好

简体中文 1 Intro 2 Updates 3 Coming Soon 4 Models 5 Quick Start \quad 5.1 setup

物奇平台MIC配置与音频通路关系

物奇平台MIC配置与音频通路关系 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 255代表无效&am…

uni-app 一些实用的页面模板

时间倒计时 <!-- 时间倒计时 --> <template><view class"container"><view class"flex-row time-box"><view class"time-item">{{ laveTimeList[0] }}</view><text>天</text><view class&qu…

Java笔记草稿——已完成

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 推荐学习视频&#xff1a; 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 目录 零…