【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南
硬件:Apple M4 Pro 16寸
系统: macos Sonoma 15.1.1
Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx,帮助您快速搭建并运行自己的 Web 服务器。
以下是您提供的目录格式转换为 CSDN 博客目录格式的示例:
目录
- 1. 安装 Nginx
- 2. 启动与管理 Nginx
- 3. 检查 Nginx 状态
- 4. 配置 Nginx
- 常用配置部分
- 5. 验证 Nginx 是否运行
- 6. 日志管理
- 7. 高级配置示例
- 说明:
- 8. 总结
1. 安装 Nginx
在 macOS 上,使用 Homebrew 是安装和管理软件包的最佳方式。以下是安装 Nginx 的详细步骤:
-
确保 Homebrew 已更新
在开始安装之前,首先更新 Homebrew 以获取最新的软件包信息。
brew update
-
使用 Homebrew 安装 Nginx
运行以下命令来安装 Nginx:
brew install nginx
安装过程中,Homebrew 会自动处理所有依赖关系,并完成 Nginx 的安装。
2. 启动与管理 Nginx
安装完成后,您可以通过 Homebrew 的 services
命令来启动和管理 Nginx 服务。
-
启动 Nginx
使用以下命令启动 Nginx 服务:
brew services start nginx
该命令不仅会启动 Nginx,还会将其设置为开机自启动。
-
停止 Nginx 服务
如果需要停止 Nginx 服务,可以使用以下命令:
brew services stop nginx
-
重新启动 Nginx 服务
在修改配置文件后,您可能需要重新启动 Nginx 以应用更改:
brew services restart nginx
3. 检查 Nginx 状态
了解 Nginx 服务的当前状态对于调试和维护至关重要。使用以下命令可以查看所有通过 Homebrew 管理的服务及其状态:
brew services list
您将看到类似以下的输出:
nginx started user /opt/homebrew/opt/nginx/bin/nginx -g daemon off;
这表示 Nginx 服务当前正在运行。
4. 配置 Nginx
Nginx 的配置文件位于 /opt/homebrew/etc/nginx/nginx.conf
。您可以使用任何文本编辑器(如 nano
、vim
或 TextEdit
)进行编辑。以下是使用 nano
编辑配置文件的示例:
nano /opt/homebrew/etc/nginx/nginx.conf
常用配置部分
-
server 块
server
块用于配置服务器的行为,包括监听端口、服务器名称和根目录等。server {listen 80;server_name aa.localhost;# 根目录设置location / {root html;index index.html index.htm;} }
listen 80;
:Nginx 将监听 80 端口的 HTTP 请求。server_name aa.localhost;
:指定服务器名称为aa.localhost
。location / { ... }
:定义根目录路径和默认首页文件。
-
location 块
location
块用于根据 URL 路径配置不同的处理方式。例如,处理静态文件、代理请求等。location /images/ {root /var/www/;autoindex on; }
该配置表示将
/images/
路径下的请求映射到/var/www/images/
目录,并启用自动索引功能。
5. 验证 Nginx 是否运行
配置完成后,您可以通过以下方式验证 Nginx 是否正常运行:
-
使用浏览器访问
在浏览器中打开 http://localhost:8080(默认端口是 8080),如果看到 Nginx 的欢迎页面,说明 Nginx 已成功运行。
-
使用命令行检查
您还可以使用
curl
命令来检查 Nginx 是否响应请求:curl http://localhost:8080
如果返回 HTML 内容,说明 Nginx 正在运行。
6. 日志管理
Nginx 的日志文件对于调试和监控非常重要。默认情况下,日志文件位于 /opt/homebrew/var/log/nginx/
目录下。
-
查看错误日志
nano /opt/homebrew/var/log/nginx/error.log
-
查看访问日志
nano /opt/homebrew/var/log/nginx/access.log
您可以根据需要调整日志文件的路径和级别。在
nginx.conf
文件中,常见的日志配置如下:error_log /opt/homebrew/var/log/nginx/error.log; access_log /opt/homebrew/var/log/nginx/access.log;
您可以根据需要修改日志路径或级别,例如:
error_log /var/log/nginx/error.log warn; access_log /var/log/nginx/access.log;
7. 高级配置示例
以下是一个更复杂的 Nginx 配置示例,展示了如何配置虚拟主机、SSL 支持和反向代理。
server {listen 80;server_name example.com www.example.com;# SSL 配置listen 443 ssl;ssl_certificate /etc/nginx/ssl/example.crt;ssl_certificate_key /etc/nginx/ssl/example.key;# 反向代理配置location / {proxy_pass http://localhost:3000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 静态文件处理location /static/ {root /var/www/example.com/;}
}
说明:
- SSL 配置:配置 HTTPS 支持,指定 SSL 证书和密钥路径。
- 反向代理:将请求代理到本地的 3000 端口,适用于 Node.js 或其他后端服务。
- 静态文件处理:将
/static/
路径下的请求映射到/var/www/example.com/static/
目录。
8. 总结
通过本文的详细步骤,您可以轻松地在 macOS 上使用 Homebrew 安装、启动、管理和配置 Nginx。Nginx 的强大功能和灵活性使其成为构建高性能 Web 服务器的理想选择。无论是简单的静态网站还是复杂的反向代理架构,Nginx 都能提供卓越的性能和可靠性。
希望本文对您有所帮助,祝您在 Nginx 的使用中一切顺利!
相关文章:
【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南
硬件:Apple M4 Pro 16寸 系统: macos Sonoma 15.1.1 Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx&#x…...
【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】
【华为OD-E卷-寻找关键钥匙 100分(python、java、c、js、c)】 题目 小强正在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码K(升序的不重复小写字母组成) 的箱子,并给出箱子编号,箱子编…...
SQL MID()
SQL中的MID()函数是一个用于从指定位置开始截取字符串中指定长度的子串的函数。这个函数在数据库查询和数据处理中经常被使用,特别是在需要从较长的文本字段中提取特定信息时。 MID()函数的基本语法是:SELECT MID(column_name, start, length) FROM tab…...
Sui 基金会任命 Christian Thompson 为新任负责人
Sui 基金会是专注于推动 Sui 蓬勃发展的生态增长与采用的机构。近日,基金会宣布任命 Christian Thompson 为新任负责人。在 Sui 主网发布的开创性一年里,Sui 凭借其无与伦比的速度、可扩展性和效率,迅速崛起为领先的 Layer 1 区块链之一&…...
ViEW生命周期
Vue的生命周期是指Vue实例从创建到销毁的整个过程,包括多个阶段和对应的钩子函数。以下是Vue生命周期的详细说明: 1. **创建阶段**: - beforeCreate:在实例初始化之前调用,此时数据观测和事件配置尚未完成,…...
[蓝桥杯 2019 国 B] 排列数
目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的,对于这道题作为2019年国赛B组的最难的一题,他的难度肯定是不小的,这道题我再一开始接触的时候连思路都没有,也是看了两三遍别人发的题解&#x…...
python 中执行from elasticsearch import Elasticsearch,AsyncElasticsearch 报错
在 Python 中执行 from elasticsearch import Elasticsearch, AsyncElasticsearch 时,如果提示 AsyncElasticsearch 不存在,可能是因为以下几个原因: 1. 安装的 elasticsearch 库版本不匹配 AsyncElasticsearch 是在 elasticsearch 库的较新版本中引入的。如果你安装的版本…...
git 删除鉴权缓存及账号信息
在Windows系统下 清除凭证管理器中的Git凭据 按下Win R键,打开“运行”对话框,输入control,然后回车,打开控制面板。在控制面板中找到“用户账户”,然后点击“凭据管理器”。在凭据管理器中,找到“Windows…...
浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码
Cookie Notices and Cookie Consent | Cookiepedia 1. 法律法规要求 许多国家和地区的隐私法律要求网站在存储或处理用户数据(包括 Cookies)之前必须获得用户的明确同意: GDPR(欧盟通用数据保护条例) 要求ÿ…...
数据结构:栈和队列的实现
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO ( Last In First Out )的原则。 压栈:栈…...
2024.12.21辩论赛感受
背景 今天辩论赛的双方论点是: 正方:寒假留在研发中心的收获大 反方:寒假去做其他事情的收获 辩论赛,为了锻炼自己,选择了不想选择以及相对不好辩论的反方。出现的状况有一下几点: 1.发现自己脑子完全跟不…...
JAVA:组合模式(Composite Pattern)的技术指南
1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…...
圣诞快乐(h5 css js(圣诞树))
一,整体设计思路 圣诞树h5(简易) 1.页面布局与样式: 页面使用了全屏的黑色背景,中央显示圣诞树,树形由三层绿色的三角形组成,每一层的大小逐渐变小。树干是一个棕色的矩形,位于三角…...
移植 OLLVM 到 LLVM18,修复控制流平坦化报错
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 前言 把 OLLVM 移植到 LLVM18 后,发现 -fla(控制流平坦化)并不能正常使用。 关于移植过程可以参考这篇文章 【移植 OLLVM…...
MFC/C++学习系列之简单记录——序列化机制
MFC/C学习系列之简单记录——序列化机制 前言简述六大机制序列化机制使用反序列化总结 前言 MFC有六大机制,分别是程序启动机制、窗口创建机制、动态创建机制、运行时类信息机制、消息映射机制、序列化机制。 简述六大机制 程序启动机制:全局的应用程序…...
【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析
文章目录 1. 计算机网络有哪些分类2. 计算机网络中协议与标准的区别3. 计算机网络拓扑有哪些结构4. 常用的网络设备有哪些,分属于OSI的哪一层5. IEEE802局域网标准有哪些 【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析 1. 计算机网络有哪些分类 计算…...
Python中的上下文管理器:从资源管理到自定义实现
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 Python中的上下文管理器(Context Manager)为资源管理提供了强大的支持,尤其在处理文件、网络连接、数据库连接等需要精确控制生命周期的…...
STM32 高级 物联网通信之CAN通讯
目录 CAN通讯介绍 物理层 协议层 CAN的帧(报文)种类 1 数据帧(发送单元->接受单元) 2 远程帧(接受单元->发送单元) 3 错误帧(发送方发送数据错误会发送的状态帧) 4 过载帧(接收方放不下会发送到的状态帧) 5 帧间隔(状态) 数据帧介绍 远程帧介绍 C…...
如何求解小于等于x的正整数因子y的个数总和
G ( X , Y ) X 的因子 Y 个数 G(X,Y) X的因子Y个数 G(X,Y)X的因子Y个数 例如 G ( 8 , 2 ) 3 G(8,2)3 G(8,2)3 G ( 12 , 2 ) 2 G(12,2)2 G(12,2)2 F ( X , Y ) ∑ i 1 X G ( i ) F(X, Y) \sum_{i1}^{X} G(i) F(X,Y)i1∑XG(i) 直接上结论 F ( X , Y ) X Y 1 ⋯ X…...
Epic游戏使用mod
以土豆兄弟为例: 第一步:获取 SteamCMD 下载官方 Steam 控制台客户端 (steamCMD) 1. 下载好后打开,是一个在 cmd 窗口的运行的命令行 2. 输入以下代码登录 login anonymous 第二步: 确认自己要下载的游戏 ID 和 mod ID 然后…...
前端:纯前端快速实现html导出word和pdf
实现html导出word,需要使用两个库。 html-docx-js和file-saver 导出word的js方法 > npm install html-docx-js >npm install file-saver js引入 import FileSaver from “file-saver”; import htmlDocx from “html-docx-js/dist/html-docx”; /**导出…...
Windows装Docker至D盘/其他盘(最新,最准确,直接装)
前言 Docker的默认安装路径为 C:\你的用户名\AppData\Local\Docker\wsl这样安装常常会导致C盘爆满。目前现有博客的安装方法往往不能把docker的container和image也装在非C盘。本博客旨在用最简单的方式,把Docker Deskstop的images和container装在D盘中。 安装前&a…...
2024 年 IA 技术大爆发深度解析
摘要: 本文旨在深入剖析 2024 年 IA 技术大爆发所引发的多方面反响。通过对产业变革、经济影响、就业市场、社会影响、政策与监管以及未来展望等维度的探讨,揭示 IA 技术在这一关键时期对全球各个层面带来的深刻变革与挑战,并提出相应的思考与…...
现代 CSS 布局与响应式设计实战指南
作为一名前端开发者,我经常被问到:"为什么你的页面布局这么流畅?响应式适配这么完美?"今天,我就来分享一下在实际项目中常用的 CSS 布局技巧和响应式设计方案。 现代布局三剑客:Flex、Grid 和 C…...
react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
使用BrowserRouter package 配置 (这部分代码可以不做配置也能实现) {"homepage": "/admin",}vite.config 配置 export default defineConfig({base: /admin])BrowserRouter 添加配置项 <BrowserRouter basename/admin>&l…...
Yolo11改进策略:Block改进|使用FastVit的RepMixerBlock改进Yolo11,重参数重构助力Yolo11涨点(全网首发)
文章目录 摘要FastViT:一种使用结构重新参数化的快速混合视觉变换器1、简介2、相关工作3、体系结构3.1、概述3.2、FastViT3.2.1、重新参数化跳过连接3.2.2、线性训练时间过参数化3.2.3、大核卷积4、实验4.1、图像分类4.2、鲁棒性评价4.3、3D Hand网格估计4.4、语义分割和目标检…...
2.6 网络面试问题
tcp 与 udp的区别 1.tcp 是基于连接的 UDP是基于数据包 2.处理并发的方式不通 a.tcp用epoll进行监听的 b. udp是模拟tcp的连接过程,服务端开放一个IP端口,收到连接后,服务端用另一个IP和端口发包给客户端。 3.tcp根据协议MTU黏包及…...
02-10.python入门基础一Python模块与包(二)
五、Python 包的概念 (一)包的定义与结构 在 Python 中,“包”(Package)是一种按照目录来组织模块的方式,它允许开发者将相关的模块集合在一起,形成一个更具逻辑性和结构性的代码单元。 从物…...
[WiFi] WiFi 802.1x介绍及EAP认证流程整理
802.1X Wi-Fi 802.1X 是一种网络访问控制协议,常用于保护无线网络。它提供了一种基于端口的网络访问控制机制,主要用于在用户和网络之间建立安全的连接。以下是 802.1X 的一些关键特点: 认证框架 802.1X 使用 EAP(可扩展认证协议…...
前端通过new Blob下载文档流(下载zip或excel)
当后端返回这样的预览: 前端该如何下载呢?首先在axios请求里,加入第三个参数{ responseType: ‘blob’ }。 proxy.$post(url, params, { responseType: blob }).then((res)>{downloadFormat(res) });然后在一个函数里处理返回,…...
R 常用的内置软件包及功能介绍
R 中有许多内置包,提供了丰富的功能来帮助用户进行数据分析、统计建模、图形可视化等任务。以下是一些常用的内置包及其功能简介: 1. stats 包 stats 是 R 的一个核心包,几乎每个 R 用户都会使用它。它包含了许多统计分析的函数,…...
基于 HC_SR04的超声波测距数码管显示(智能小车超声波避障部分)
超声波测距模块HC-SR04 1、产品特色 ①典型工作用电压:5V ②超小静态工作电流:小于 5mA ③感应角度(R3 电阻越大,增益越高,探测角度越大): R3 电阻为 392,不大于 15 度 R3 电阻为 472, 不大于 30 度 ④探测距离(R3 电阻可调节增益,即调节探测…...
12月第十九讲:Redis应用Redis相关解决方案
1.数据库与缓存一致性方案 2.热key探测系统处理热key问题 3.缓存大value监控和切分处理方案 4.Redis内存不足强制回收监控告警方案 5.Redis集群缓存雪崩自动探测 限流降级方案 6.缓存击穿的解决方法 线上Redis比较严重的问题排序是:数据库和缓存一致性、热key…...
solon 集成 activemq-client (sdk)
原始状态的 activemq-client sdk 集成非常方便,也更适合定制。就是有些同学,可能对原始接口会比较陌生,会希望有个具体的示例。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client&l…...
STM32-笔记7-继电器定时开闭
1、复制02项目,重命名08-继电器定时开闭 打开项目工程 在\Drivers\BSP\该路径下,新建alarm文件夹,该文件夹下里面包含alarm.c和alarm.h文件 加载进该项目中 为什么这里使用的是 这个单词,而不是继电器(relay&#…...
B4X编程语言:B4X的映射(数据地图Map)详解
B4X的映射(Map)是由多个键值对组成的数据集合,也称为数据地图。它和列表一样也是一个非可视化的数据容器,在B4X中作为变量使用,用于在单个变量下存储多个键值对。 映射中的键是唯一的。 这意味着,如果您添加了一个键/值对…...
windows C++ 判断文件大小,清空文件,写日志
windows C 判断文件大小,清空文件,写日志等几个常见的接口,记录一下备忘 #include <iostream> #include <vector> #include<Windows.h> #include<string> #include <iostream> #include <sys/types.h> …...
用Python设置Excel工作表的页眉和页脚
在处理和分析数据时,Excel作为一款功能强大的工具,被广泛应用于各个领域。当涉及到打印或分享工作表时,为文档添加专业的页眉和页脚不仅能提升文件的视觉效果,还能提供必要的信息,例如公司标识、日期、文件名或是页码等…...
electron-vite【实战】自定义标题栏【组件封装】(含异形标题栏,指定区域拖拽,窗口置顶,窗口最小化,窗口最大化,取消最大化,隐藏窗口到托盘等)
效果预览 技术要点 透明背景 src/main/index.ts 的 new BrowserWindow 中添加 transparent: true, // 设置窗口背景透明frame: false, // 隐藏窗口边框仅图标和标题部分可拖拽 仅图标和标题部分添加样式 drag .drag {-webkit-app-region: drag; }图标与标题栏的融合 标题栏的…...
MySQL复制问题和解决
目录 环境介绍 一,主库执行delete,从库没有该数据 模拟故障 修复故障 二,主库执行insert,从库已存在该数据 模拟故障 故障恢复 三,主库执行update,从库没有该数据 模拟故障 故障恢复 四…...
Spark和Hive的区别
1 、 Hive Hive 是基于 Hadoop 的数据仓库工具,同时又是查询引擎, Spark SQL 只是取代的 Hive 的查询引擎这一部分,企业可以使用HiveSpark SQL 进行开发。 Hive 的主要工作如下: 把HQL 翻译长 map-reduce 的代码,并…...
Type-C 接口电热毯:开启温暖智能新时代
在当今科技迅猛发展的时代,智能家居产品如同璀璨繁星般点缀着我们的生活,从智能灯光的温馨到温控系统的精准,处处都彰显着科技赋予生活的便捷与舒适。而在这股追求高效与智能化的洪流之中,一款极具创新的电热毯——Type-C 接口电热…...
React 19新特性探索:提升性能与开发者体验
React作为最受欢迎的JavaScript库之一,不断推出新版本以应对日益复杂的应用需求。React 19作为最新的版本,引入了一系列令人兴奋的新特性和改进,旨在进一步提升应用的性能、开发效率和用户体验。 本文将深入探讨React 19的新特性,…...
【数据库】SQL语句基础
【数据库】SQL语句基础 文章目录 【数据库】SQL语句基础一、SQL与数据库二、 SQL语句类型2.1 数据定义语言(DDL)1. 创建数据库:CREATE DATABASE2. 创建表:CREATE TABLE3. 删除表:DROP TABLE4. 修改表结构:A…...
性能】JDK和Jmeter的安装与配置
一、JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包,下载后安装,安装中记录JDK安装的地址,之后一直点击下一…...
Hadoop、Hbase使用Snappy压缩
1. 前期准备 系统环境:centos7.9 配置信息:8C8G100G hadoop和hbase为单节点部署模式 jdk版本jdk1.8.0_361 1.1. 修改系统时间 timedatectl set-timezone <TimeZone> 1.2. 修改主机名以及主机名和IP的映射 vim /etc/hosts #将自己的主机名以及…...
初试Docker
1. 查看版本 docker --version2. 拉取镜像并查看当前存在的镜像 docker pull hello-world查看是否成功拉取到docker docker images在Docker Desktop 可视化查看 3. 删除镜像 docker rmi xxx4. 启动容器 以下命令使用 mysql镜像启动一个容器,参数为以命令行模…...
【Rust自学】4.5. 切片(Slice)
4.5.0. 写在正文之前 这是第四章的最后一篇文章了,在这里也顺便对这章做一个总结: 所有权、借用和切片的概念确保 Rust 程序在编译时的内存安全。 Rust语言让程序员能够以与其他系统编程语言相同的方式控制内存使用情况,但是当数据所有者超…...
番外:ubuntu 下的sqlite3
What Is SQLite? SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world ps:SQLite Home Page sqlite3 的安装: user…...
全脐点曲面当且仅当平面或者球面的一部分
S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 S_\text{ 是全脐点曲面当且仅当 }{S_\text{ 是平面或者球面的一部分。}} S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 证: 充分性显然,下证必要性。 若 r ( u , v ) r(u,v) r(u,v)是…...