Mac安装配置使用nginx的一系列问题
brew安装nginx
https://juejin.cn/post/6986190222241464350
-
使用brew安装nginx,如下命令所示:
brew install nginx
如下图所示:
2.查看nginx的配置信息,如下命令:
brew info nginx
From:xxx 这样的,是nginx的来源,Docroot默认为 /usr/local/var/www, 在/usr/local/etc/nginx/nginx.conf 配置文件中默认的端口为8080, 且nginx将在/usr/local/etc/nginx/servers 目录中加载所有文件。
并且我们可以通过最简单的命令’nginx’ 来启动nginx.
/opt/homebrew/etc/nginx/nginx.conf
配置文件
/opt/homebrew/var/www
前端放置文件路径
brew services restart nginx
3.查看nginx安装目录, 如下命令:
/opt/homebrew/etc/nginx
打开nginx目录后,可以看到我们上面的使用 brew info nginx 查看信息所说的 server目录以及nginx.conf的配置文件,那么我们的nginx被安装到什么地方呢?我们从上面的截图可以看到,是在 这个目录下 /opt/homebrew/Cellar/nginx,执行如下命令可以查看到:
open /opt/homebrew/Cellar/nginx
会打包目录,如下图所示:
进入上面的 1.27.3文件后,如下图所示:
在该目录下可以看到一个名字为html的快捷方式的文件夹,进入该目录后,它有两个文件50.html和index.html,如下图所示:
启动nginx服务
如下命令:
brew services start nginx // 重启的命令是: brew services restart nginx
如下图所示:
Nginx下载成功了但是访问http://localhost:8080/时,显示出错,多次尝试都没有结果;
寻求帮助
最后通过森哥帮助解决:
- 首先跟随该教程进行编译安装
Mac编译安装Nginx_mac nginx-CSDN博客
尝试了很多方法解决问题,但是最终都没有取得想要的效果;
重新安装配置
于是把原本安装好的nginx卸载掉了,重新进行下载安装配置:
通过以下代码,进行nginx重启:
上网查询,通过以下代码进行查询nginx版本号,并得到如上图所示响应
nginx -v
查看nginx版本号的几种方法_51CTO博客_linux查看nginx版本号
更改配置重启nginx,输入如下所示代码
nginx -s reload
nginx启动、重启、关闭
nginx启动、重启、关闭 - 酷玩时刻 - 博客园
启动
cd usr/local/nginx/sbin
注意:usr/local/nginx 是安装目录
./nginx
重启
更改配置重启nginx
kill -HUP 主进程号或进程号文件路径
或者使用
cd /usr/local/nginx/sbin
./nginx -s reload
关闭
./nginx -s stop
判断配置文件是否正确
nginx -t -c /usr/local/nginx/conf/nginx.conf
或者
cd /usr/local/nginx/sbin
./nginx -t
关闭
查询nginx主进程号
ps -ef | grep nginx
从容停止 kill -QUIT 主进程号
快速停止 kill -TERM 主进程号
强制停止 kill -9 nginx 或者 killall -9 nginx
./nginx -s stop
若nginx.conf配置了pid文件路径,如果没有,则在logs目录下
kill -信号类型 ‘/usr/local/nginx/logs/nginx.pid’
升级
1、先用新程序替换旧程序文件
2、kill -USR2 旧版程序的主进程号或者进程文件名
此时旧的nginx主进程会把自己的进程文件改名为.oldbin,然后执行新版nginx,此时新旧版本同时运行
3、kill -WINCH 旧版本主进程号
4、不重载配置启动新/旧工作进程
kill -HUP 旧/新版本主进程号
从容关闭旧/新进程
kill -QUIT 旧/新进程号
快速关闭旧/新进程
kill -TERM 旧/新进程号
最终跟随该教程指引,完成了配置安装
MacOS 下安装 Nginx_macos 安装nginx-CSDN博客
最后将课程中所给的前端环境中的资源拷贝放置到了对应的nginx位置
并且对nginx中的nginx.conf文件进行对应的编译改写,
server {listen 90;server_name localhost;location / {root html;index index.html index.htm;}location ^~ /api/ {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://localhost:8080;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
location /
在Web服务器配置中,location /
是一个非常重要的指令,通常出现在Nginx或Apache服务器的配置文件中。它定义了服务器如何处理对网站根目录(即域名或IP地址后不加任何路径时的访问)的请求。
在Nginx中:
在Nginx中,location /
块定义了默认的请求处理,如果没有其他更具体的location
匹配,就会使用这个块的配置。例如:
server {listen 80;server_name example.com;location / {root /usr/share/nginx/html;index index.html index.htm;}
}
在这个例子中,当用户访问 Example Domain 时,Nginx会查找 /usr/share/nginx/html
目录下的 index.html
或 index.htm
文件,并将其作为响应返回。
location /
是一个用于定义对网站根目录请求处理的指令。- 在Nginx中,它通常用于指定文档根目录和默认页面。
- 这个指令对于确保网站根目录的请求被正确处理至关重要。
正确配置 location /
可以提高网站的可用性和安全性,确保用户访问网站时能够获得正确的内容。
location ^~ /api/
在 Nginx 配置中,location ^~ /api/
指令用于定义一个特定的位置块,该块匹配所有以 /api/
开头的请求路径。这里的 ^~
是一个特殊字符,它表示如果 Nginx 遇到以 ^~
开头的 location
块,并且该块的路径与请求的 URI 匹配,则 Nginx 将停止搜索其他 location
块,并使用这个块来处理请求。
以下是 location ^~ /api/
的一些关键点:
非正则表达式匹配:
location ^~ /api/
是一个非正则表达式匹配,这意味着它将匹配任何以/api/
开头的 URI,但不包括正则表达式匹配的 URI。
高优先级匹配:
- 使用
^~
时,Nginx 会给予这个location
块更高的优先级,一旦匹配,就不会再考虑其他非正则表达式的location
块。
配置示例:
-
假设你想要将所有
/api/
开头的请求代理到一个后端应用服务器,你可以这样配置:server {
listen 80;
server_name example.com;location ^~ /api/ {proxy_pass http://backend_server; }
}
-
在这个例子中,所有以
/api/
开头的请求(如/api/users
、/api/products
)都会被代理到 http://backend_server
。
与正则表达式匹配的区别:
- 如果你使用
location ~ /api/
,则 Nginx 会将其视为正则表达式匹配,并且会继续搜索其他正则表达式的location
块,直到找到最长的匹配。
非严格匹配:
^~
匹配不是严格的,意味着它不会要求location
块的路径完全匹配 URI 的一部分。例如,location ^~ /api/
会匹配/api/v1/users
。
使用 location ^~ /api/
可以有效地将特定路径的请求路由到不同的处理程序,例如代理、静态文件服务或其他位置块。这种方式在配置 API 路由时特别有用,因为它允许你将 API 请求与其他类型的请求分开处理。
终止监听端口占用
在不同的操作系统中,终止监听端口占用的命令行语句有所不同。以下是一些常见的命令:
在Linux或MacOS中:
查找占用端口的进程:
使用lsof
或netstat
命令来查找哪个进程正在使用特定的端口。
lsof -i :端口号
# 或者
netstat -tlnp | grep 端口号
杀死进程:
一旦你知道了进程ID(PID),你可以使用kill
命令来终止该进程。
kill -9 PID
其中PID
是占用端口的进程ID。
在执行这些操作时,请确保你了解正在终止的进程,因为强制终止系统进程或其他关键进程可能会导致系统不稳定或数据丢失。在执行任何杀死进程的操作之前,最好先确认该进程是否可以安全终止。
另外,如果你没有足够的权限执行这些命令,可能需要使用sudo
(在Linux或MacOS中)或以管理员身份运行命令提示符(在Windows中)。
更改网址:server.port=8081
`server.port` 是一个常见的配置属性,通常出现在使用 Spring Boot 框架的 Java 应用程序中。这个属性用于指定 Spring Boot 应用的 HTTP 服务器监听的端口号。
在 Spring Boot 应用中,`server.port` 可以在几个地方进行配置:
1. application.properties 或 application.yml 文件:
- 这是最常见的配置方式。你可以在这些配置文件中设置 `server.port` 属性来改变应用的监听端口。
# application.propertiesserver.port=8080# application.ymlserver:port: 8080
2. 环境变量:
你也可以通过设置环境变量 `SERVER_PORT` 来配置端口号。
3. 命令行参数:
在启动应用时,可以通过命令行参数来指定端口:
java -jar yourapp.jar --server.port=8080
4. 编程方式:
- 在代码中,可以通过编程的方式设置端口号,例如在 Spring Boot 的 `application.properties` 或 `application.yml` 文件中不指定端口,然后在代码中通过 `@Value` 注解注入 `server.port` 属性,并据此来设置端口。
为什么需要配置 `server.port` 呢?因为在同一台机器上运行多个 Spring Boot 应用时,每个应用都需要监听不同的端口以避免冲突。此外,了解和控制应用监听的端口对于网络安全和网络配置也是非常重要的。
如果你在部署 Spring Boot 应用时遇到端口冲突或需要根据环境(开发、测试、生产)动态调整端口,合理配置 `server.port` 是一个有效的解决方案。
快捷方式打开面板
元素、控制台或上一个面板
Mac
Cmd + Option + C
命令行语句:ls、pwd
命令行语句ls
ls
是一个在 Unix 和 Unix-like 操作系统(如 Linux 和 macOS)的命令行界面中使用的命令,用于列出目录内容。当你在终端或命令行界面中输入 ls
并按下回车键时,它会显示当前工作目录中的文件和子目录的名称。
以下是 ls
命令的一些常见用法和选项:
基本用法:
ls
:列出当前目录下的所有文件和目录。
查看隐藏文件:
ls -a
或ls -A
:列出所有文件,包括以点(.
)开头的隐藏文件。
按时间排序:
ls -lt
:按时间排序,最新的文件显示在最前面。
显示详细列表:
ls -l
:以长格式列出文件详细信息,包括权限、所有者、大小和最后修改时间。
递归列出目录内容:
ls -R
:递归地列出所有子目录的内容。
按大小排序:
ls -lS
:以长格式列出文件,并按文件大小排序。
按修改时间排序:
ls -lt
:按修改时间排序,最新的文件显示在最前面。
指定路径:
ls /path/to/directory
:列出指定路径下的文件和目录。
组合选项:
ls -lh
:以长格式列出文件,并以易读的格式显示文件大小(例如 KB、MB)。
搜索文件:
ls -搜索字符串
:列出包含搜索字符串的文件和目录。
ls
命令是命令行用户最常用的命令之一,因为它提供了一个快速查看当前目录内容的方法。通过结合不同的选项和参数,你可以自定义输出,以满足特定的需求。
命令行语句pwd
pwd
是一个在 Unix 和 Unix-like 操作系统(如 Linux 和 macOS)的命令行界面中使用的命令,代表 “print working directory”,即“打印当前工作目录”。当你在终端或命令行界面中输入 pwd
并按下回车键时,它会显示你当前所在的完整目录路径。
以下是 pwd
命令的一些特点:
显示当前路径:
pwd
:显示当前工作目录的完整路径。
没有参数:
pwd
命令不接受任何参数或选项,它始终显示当前目录的路径。
常用于导航确认:
- 当你在命令行中使用
cd
(change directory)命令导航到不同目录时,pwd
可以帮助你确认当前所在的目录。
脚本中使用:
- 在编写 Shell 脚本时,
pwd
命令可以用来获取和记录当前工作目录的路径。
环境变量:
- 通常,
pwd
命令依赖于PWD
环境变量,该变量存储当前工作目录的路径。如果PWD
变量未正确设置,pwd
命令可能会返回错误的路径。
权限问题:
- 如果你由于权限问题无法访问某些上级目录,
pwd
命令可能会显示No such file or directory
错误。
pwd
是一个简单但非常有用的命令,它帮助你了解当前的工作位置,这对于文件管理和导航至关重要。
相关文章:

Mac安装配置使用nginx的一系列问题
brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx,如下命令所示: brew install nginx 如下图所示: 2.查看nginx的配置信息,如下命令: brew info nginxFrom:xxx 这样的,是n…...
Vue3中使用组合式API通过路由传值详解
在Vue 3中,使用组合式API来传递路由参数是一种常见的需求。Vue Router 是 Vue.js 的官方路由管理工具,可以在不同的场景下通过多种方式传递和接收路由参数。下面将详细讲解几种常见的路由传值方式,并提供相应的代码示例。 1. 通过路由参数传…...

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库
目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的,所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意:直接git pu…...
浏览器安全(同源策略及浏览器沙箱)
一、同源策略(Same Origin Policy) 1.定义 同源策略(Same - origin Policy)是一种浏览器的安全机制。它规定一个网页的脚本只能访问和操作与它同源的资源。这里的 “源” 包括协议(如 http、https)、域名&…...

w~Transformer~合集11
我自己的原文哦~ https://blog.51cto.com/whaosoft/12472192 #LightSeq 最高加速9倍!字节跳动开源8比特混合精度Transformer引擎,近年来,Transformer 已经成为了 NLP 和 CV 等领域的主流模型,但庞大的模型参数限制了它的高效训练和推理。…...

Coursera四门课备考入学考试
某学校入学考试复习用,刷到的话纯靠缘分,不方便回答多余问题 (博主本人waive掉了没有考过,但还是基本都学完了) 记录学习coursera的四门课(顺序Py在DS前,其他无所谓) Mathematics fo…...

Flink(八):DataStream API (五) Join
1. Window Join Window join 作用在两个流中有相同 key 且处于相同窗口的元素上。这些窗口可以通过 window assigner 定义,并且两个流中的元素都会被用于计算窗口的结果。两个流中的元素在组合之后,会被传递给用户定义的 JoinFunction 或 FlatJoinFunct…...

HarmonyOS NEXT边学边玩:从零实现一个影视App(六、视频播放页的实现)
在HarmonyOS NEXT中,ArkUI是一个非常强大的UI框架,能够帮助开发者快速构建出美观且功能丰富的用户界面。本文将详细介绍如何使用ArkUI实现一个影视App的视频播放页面。将从零开始,逐步构建一个功能完善的视频播放页面,并解释每一部…...
salesforce实现一个字段的默认初始值根据另一个字段的值来自动确定
在 Salesforce 中,可以通过 公式字段 或 触发器 (Trigger) 实现字段的默认初始值根据另一个字段的值来自动确定,具体实现方法如下: 1. 使用公式字段 公式字段是一种动态字段,值会根据公式实时计算。 步骤: 导航到字段…...
Linux 文件权限详解
目录 前言 查看文件权限 修改文件权限 符号方式 数字方式 前言 Linux 文件权限是系统中非常重要的概念之一,用于控制对文件和目录的访问。权限分为读(Read)、写(Write)、执行(Execute)三个…...

【混合开发】CefSharp+Vue桌面应用程序开发
为什么选择CefSharpVue做桌面应用程序 CefSharp 基于 Chromium Embedded Framework (CEF) ,它可以将 Chromium 浏览器的功能嵌入到 .NET 应用程序中。通过 CefSharp,开发者可以在桌面应用程序中集成 Web 技术,包括 HTML、JavaScript、CSS 等…...
springBoot项目使用Elasticsearch教程
目录 一、引言(一)使用背景(二)版本库区别 二、引入依赖(一)springboot集成的es依赖(建议)(二)es提供的客户端库 三、配置(以yaml文件为例&#x…...

模型 多元化思维(系统科学)
系列文章分享模型,了解更多👉 模型_思维模型目录。融合多学科知识,全面解决问题。 1 多元化思维模型的应用 1.1 完美日记的私域流量运营 完美日记作为美妆行业的新兴品牌,通过多元化的思维模型在私域流量运营中取得了显著成功。…...
Google地图瓦片爬虫
地图地址说明 1、谷歌矢量(中文标注) http://mt{0-3}.google.cn/vt/vm416115521&hlzh-CN&glcn&x{x}&y{y}&z{z}&sGalileo 2、谷歌矢量(英文标注) http://mt{0-3}.google.cn/vt/vm416115521&hlen&glcn&x{x}&y{y}&z{z}&sGali…...

【C++】size_t全面解析与深入拓展
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯一、什么是size_t?为什么需要size_t? 💯二、size_t的特性与用途1. size_t是无符号类型示例: 2. size_t的跨平台适应性示例对…...

Web端实时播放RTSP视频流(监控)
一、安装ffmpeg: 1、官网下载FFmpeg: Download FFmpeg 2、点击Windows图标,选第一个:Windows builds from gyan.dev 3、跳转到下载页面: 4、下载后放到合适的位置,不用安装,解压即可: 5、配置path 复制解压后的\bin路径,配置环境变量如图: <...

学习 Git 的工作原理,而不仅仅是命令
Git 是常用的去中心化源代码存储库。它是由 Linux 创建者 Linus Torvalds 创建的,用于管理 Linux 内核源代码。像 GitHub 这样的整个服务都是基于它的。因此,如果您想在 Linux 世界中进行编程或将 IBM 的 DevOps Services 与 Git 结合使用,那…...
C语言变长嵌套数组常量初始化定义技巧
有时候,我们需要在代码里配置一些常量结构,比如一个固定的动作流程ActionFlow:包含N(即flow_num)个动作列表(ActionArray),每个动作列表包含M(即act_num)个可…...

如何查看特定版本的Spring源码
写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…...

【深度学习】关键技术-激活函数(Activation Functions)
激活函数(Activation Functions) 激活函数是神经网络的重要组成部分,它的作用是将神经元的输入信号映射到输出信号,同时引入非线性特性,使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...