Nginx静态网站部署配置详解 | 新手必看指南 🚀
✨ 前言:作为一名从零开始学习Nginx配置的开发者,我在初次部署静态网站时,面对Nginx复杂的配置文件结构感到十分困惑。nginx.conf、sites-available、sites-enabled等目录和文件各自承担着什么职责?它们之间又是如何协同工作的?经过深入研究和实践验证,我整理出了一些初学nginx时的常见问题,以问题的形式为新手建立对nginx的整体认识,希望能帮助初学者快速掌握Nginx的核心配置逻辑。
🛠️环境:操作系统:Ubuntu 22.04 LTS🐧
nginx版本:nginx/1.18.0 (Ubuntu)
❓常见问题解答:Q1:nginx配置文件有哪些 ?📂Nginx 配置文件结构总览
配置文件/目录
路径示例
主要作用
核心配置项/内容
使用说明
nginx.conf (主配置文件)
/etc/nginx/nginx.conf
全局配置入口,定义Nginx运行的基础参数
- user, worker_processes - events块 - http块 - include指令
相当于程序的 main 函数 ...
🚀 前端项目部署小白教程:从打包到上线的完整指南
✨ 前言作为一名前端开发者,我们通常只需要将打包好的文件交给后端或运维同学即可完成部署。但在某些场景下,我们也需要亲自将前端资源部署到服务器上。本文将以最直观的方式,带你一步步完成前端项目的完整部署流程,并解释其中涉及的关键概念!🎯
📚 核心概念解析在开始实操前,先了解几个基础概念,这将帮助你更好地理解整个部署过程:
1. 什么是 Nginx?🌐Nginx(发音为”engine-x”)是一款高性能的开源Web服务器,同时具备反向代理、负载均衡和HTTP缓存等强大功能。它最初是为了解决C10K问题(即单服务器处理万级并发连接)而设计。
以下是Nginx的核心功能概览:
功能类别
核心能力
典型应用场景
Web服务器
高效处理静态资源(HTML、CSS、JS、图片等)
托管静态网站、作为前端资源服务器
反向代理
接收客户端请求并转发给后端服务器,隐藏真实服务器信息
作为后端应用的统一入口和安全屏障
负载均衡
将请求分发到多个后端服务器
分散高并发流量,提高应用可用性
HTTP缓存
缓存静态内容及后端响应,加速访问速度
提升用户体验,减少服务器负载
SSL& ...
「SSL证书管理自动化」使用acme.sh+tccli实现全自动证书申请、上传腾讯云CDN配置(多图+长文)
前言我之前已经写过一篇certbot申请ssl证书的文章,为什么这次还要再写一遍呢? 原因在于,certbot 虽能实现服务器内部的 SSL 证书申请与自动更新,但在使用 CDN 的场景下,无法自动将证书上传并配置到腾讯云 CDN(或许有方法但我未曾深入研究)。相比之下,acme.sh 在这一场景下表现更为出色,不仅灵活性强,还能满足我的定制化需求。
acme.sh与certbot的横向对比
特性维度
acme.sh
certbot
核心设计
纯 Shell 脚本编写
由 Let’s Encrypt 官方推荐,使用 Python 编写
安装与复杂度
安装简单,配置相对复杂,尤其在使用 DNS API 时
安装与配置较为简单,但对复杂或特殊环境的支持较弱
自动化与续期
自动设置定时任务,自动化程度高
更新证书需要手动设置 cron 任务
验证方式
支持多种验证方式(如 DNS、HTTP),尤其擅长通过 DNS API 进行验证,适合通配符证书
支持 HTTP 和 DNS 验证
灵活性
非常灵活,支持众多 DNS 服务商 API,可指定证书存放路径
与主流 Web ...
41-linux安装docker全过程记录
背景Docker——容器化技术,作为现代化运维技术的一环,其重要性不言而喻。最近我在优化个人网站的过程中,发现之前使用twikoo云函数部署的方式不太能满足我对网站的性能要求,每次发送获取twikoo云函数的请求时,耗时都在一秒多甚至两秒以上。于是考虑使用docker来进行私有化部署twikoo,另外,我的腾讯云服务器快到期了,到时候续费如果涨价太厉害,我也考虑迁移服务器,届时如果把我的nginx服务也托管到docker,到时候服务器迁移起来应该会比较轻松(仅是我的想象);
系统环境系统版本:Ubuntu 22.04 LTS
过程记录1.首先打开Docker官方文档,找到了docker安装部分的教程:https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
2.遵照教程,卸载可能冲突的包123456789101112131415161718192021222324252627282930313233343536ubuntu@VM-16-3-ubuntu:~$ for pkg in docker ...
记录一个ts值导入和类型导入混淆造成的bug
问题描述vue3+ts项目开发过程中遇到一个奇怪的bug,如下图所示
排查过程:查看源代码,可以发现有两个style.ts文件,且内容不一样:
询问AI后了解到:
继续拷问AI,了解到:
解决办法:
总结:ts中值导入和类型导入需要区分清楚,如果将类型当做值导入,比如:
1import { MyInterface } from './myInterface.ts' //错误地将interface当做值导入
那么在运行时可能会出现文章开头的错误。
mapboxgl地形切片制作全流程记录
背景:内网环境下使用mapboxgl开发需要加载本地部署的离线地形切片
mapbox支持的地形瓦片规范
Mapbox 地形 RGB 瓦片。更多信息参见 https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb。
Terrarium 格式的 PNG 瓦片。更多信息参见 https://aws.amazon.com/es/public-datasets/terrain/。
实践步骤:1.DEM下载使用QGIS插件STRM-Downloader可以下载全球任意经纬度范围的DEM切片
注意:使用该插件需要科学上网,如果没有科学上网没有下载成功也不会报错,这个比较坑,我科学上网以后就能正常下载了
下载完成后,在qgis中打开vrt索引文件,长这样
2.地形切片有了DEM数据后,就可以开始地形切片了,这里使用了国内大佬开发的开源地形切片工具:https://github.com/FreeGIS/dem2terrain
根据readme文档一步步操作:
1.工具下载先使用npm全局安装dem2terrai ...
Cesium中几种glsl代码编写入口的盘点与区分
背景:为什么需要在Cesium中编写glsl代码?在三维数字孪生系统中,使用Cesium的基础功能已经能满足常见的三维渲染需求,但想要追求更好的效果,比如高质量水面、体积云、流体模拟、流动飞线、雷达扫描等酷炫的效果,则需要通过编写glsl代码来实现。
Cesium中glsl代码入口盘点1. Appearance(最底层)
本质:直接定义完整的渲染管线,包括顶点着色器、片元着色器、渲染状态(深度测试、剔除等)。
特点:完全从零开始控制渲染,没有预设逻辑,需要自己实现所有顶点变换…
Cesium中Appearance的vertexShaderSource、FragmentShaderSource,Materia的shaderSource,material.fabric.source,这三者里面写着色器代码有啥区别
在 Cesium 中,Appearance的vertexShaderSource/fragmentShaderSource、Material的shaderSource以及material.fabric.source这三种方式都用于编写着色器代码,但它们的抽象层级、使用 ...
手把手教你用NestJS搭建第一个Node.js后端项目
背景:为什么选择 NestJS?作为一名前端 GIS 开发工程师,最近在开发一个小项目时需要搭建后端服务。虽然之前用过 Express 框架,但在工作中发现许多 Node.js 后端项目都在使用 NestJS 框架。借此机会,我决定深入学习 NestJS,探索这款框架如何提升后端开发效率。
Nestjs框架简介:企业级 Node.js 开发的最佳拍档NestJS 是一个基于 TypeScript 的企业级 Node.js 后端框架,它结合了 Express 的灵活性和现代后端框架的最佳实践,特别适合构建可扩展、可维护的应用程序,堪称中大型项目的理想选择。
Nestjs核心架构:清晰分层的工程化设计NestJS 采用了清晰的分层架构,主要包含以下核心层次,每个层次各司其职,让代码结构一目了然:
Controllers(控制器层)
处理 HTTP 请求(支持REST/GraphQL/WebSocket等多种协议)
定义路由和请求 / 响应格式
1234567@Controller('users')export class UsersC ...
原生Cesium加载超图S3M服务
适用场景:通常情况下,加载S3M数据需要使用超图的SuperMap iClient3D for WebGL库。
但在某些项目中,我们可能已经构建了基于原生Cesium的应用框架,不希望引入过多依赖。这时,实现原生Cesium加载S3M就变得很有价值。
关键代码:12345678import "@/components/SuperMap3D/SuperMap3D.js";//获取viewer对象const { viewer } = window;let scenes = "https://www.supermapol.com/realspace/services/3D-CBD/rest/realspace";viewer.scene.open(scenes);
💡 SuperMap3D.js文件中的SUPERMAP_BASE_URL需要配置成上面静态资源的实际请求路径
效果展示
参考文章:https://mp.weixin.qq.com/s/ZimVYQotuAcfB9tXK3FtNw —— 攻城师不浪
Cesium使用自定义Shader渲染3dtiles建筑白膜
适用场景大屏项目,有科技风格主题渲染需求的,可以对建筑白膜进行自定义渲染,实现灵活多变酷炫的风格
实现思路Cesium自1.87.1版本,开始支持3DTileset使用CustomShader:
1Added CustomShader class for styling Cesium3DTileset or ModelExperimental with custom GLSL shaders
在CesiumJS 1.97版本,支持Model entities使用CustomShader:
1Model entities now support CustomShader
借助CustomShader,我们可以轻松的实现模型的自定义Shader渲染
效果展示
关键代码12345678910111213141516171819202122232425262728//基于高度的渐变和线条扫描特效const shader = new Cesium.CustomShader({ fragmentShaderText: ` void fragmentMain ...
在vue3项目中引入Cesium的最佳实践(转载)
基础引入方式的弊端在本人以往的离线Cesium项目中,通常的做法是在下载完cesium依赖后,直接将node_modules/cesium/Build/Cesium文件夹复制到项目根目录的public路径下,这一过程依赖手动操作。如果cesium版本更新后,也要手动更新静态资源,如果忘记了这一步,通常会出现cesium渲染报错;解决这一问题让其自动化是本文的目的。
核心优化1.静态资源自动复制使用一种静态资源复制插件,实现将node_modules中的Cesium/Build/Cesium下的文件复制到public,替代我们的手动操作;
在vite.config.ts文件中增加如下配置:
123456789101112131415161718192021222324252627282930313233343536373839404142import { fileURLToPath, URL } from 'node:url'import { viteStaticCopy } ...
使用certbot申请ssl证书并实现自动续期
背景:最近本站的ssl证书又过期了需要更新,于是趁此机会研究下Certbot自动续期,实现ssl证书自动更新;
环境:操作系统:ubuntu 22.04 LTS
步骤记录:1.安装certbot(使用apt安装)使用以下命令安装
12sudo apt-get updatesudo apt-get install certbot
2.插件选择目前certbot常用的自动续期方式有两种,一种是使用certbot-nginx插件的方式,一种是使用dns服务商插件的方式;第一种方式不支持泛域名,如果需要申请支持泛域名的ssl证书的话,只能选择第二种方式;
3.nginx插件方式(不支持泛域名)3.1 安装nginx插件1sudo apt install certbot python3-certbot-nginx
打开nginx.conf,在你的站点配置中添加ACME挑战路径处理模块
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 ...