Mac安装配置使用nginx的一系列问题

news2025/3/16 13:15:24

brew安装nginx

https://juejin.cn/post/6986190222241464350

  1. 使用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.htmlindex.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中:

查找占用端口的进程

使用lsofnetstat命令来查找哪个进程正在使用特定的端口。

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.properties
   server.port=8080

 # application.yml
   server:
   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 -als -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 是一个简单但非常有用的命令,它帮助你了解当前的工作位置,这对于文件管理和导航至关重要。

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

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

相关文章

在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

题目:在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。 延时函数分析LED首先实现8个数码管单独依次显示0~9的数字所有数码管一起同时显示0~F的值,如此往…

组件库选择:ElementUI 还是 Ant Design

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

从运输到植保:DeepSeek大模型探索无人机智能作业技术详解

DeepSeek,作为一家专注于深度学习与人工智能技术研究的企业,近年来在AI领域取得了显著成果,尤其在无人机智能作业技术方面展现了其大模型的强大能力。以下是从运输到植保领域,DeepSeek大模型探索无人机智能作业技术的详解&#xf…

超越LSTM!TCN模型如何精准预测股市波动(附代码)

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:最近我用TCN时间卷积网络预测了标普500指数(SPX)的每日回报率,发现效果远超传统方法。TCN通过因果卷积和膨胀卷积捕捉时间序列的长期依赖关…

[每周一更]-(第133期):Go中MapReduce架构思想的使用场景

文章目录 **MapReduce 工作流程**Go 中使用 MapReduce 的实现方式:**Go MapReduce 的特点****哪些场景适合使用 MapReduce?**使用场景1. 数据聚合2. 数据过滤3. 数据排序4. 数据转换5. 数据去重6. 数据分组7. 数据统计8.**统计文本中单词出现次数****代码…

QML初识

目录 一、关于QML 二、布局定位和锚点 1.布局定位 2.锚点详解 三、数据绑定 1.基本概念 2.绑定方法 3.数据模型绑定 四、附加属性及信号 1.附加属性 2.信号 一、关于QML QML是Qt框架中的一种声明式编程语言,用于描述用户界面的外观和行为;Qu…

查询已经运行的 Docker 容器启动命令

一、导语 使用 get_command_4_run_container 查询 docker 容器的启动命令 获取镜像 docker pull cucker/get_command_4_run_container 查看容器命令 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container 容器id或容器名 …

协议_CAN协议

物理层特征 信号传输原理: CAN控制器根据CAN_L和CAN_H上的电位差来判断总线电平,总线电平分为显性电平(CAN_H与CAN_L压差 2v)、隐性电平(CAN_H与CAN_L压差 0v),发送方通过总线电平的变化&am…

QT修仙之路2-2 对话框 尚欠火候

警告对话框 相关代码 错误对话框 相关代码 消息对话框 相关代码 询问对话框 相关代码 相关代码 警告对话框 QMessageBox::warning(this,"错误","账号密码不能为空",QMessageBox::Ok);错误对话框 QMessageBox msgBox(QMessageBox::Critical,"错误…

NFT Insider #168:The Sandbox 推出新春{金蛇礼服}套装;胖企鹅合作 LINE Minini

引言:NFT Insider 由 NFT 收藏组织 WHALE Members、BeepCrypto 联合出品, 浓缩每周 NFT 新闻,为大家带来关于 NFT 最全面、最新鲜、最有价值的讯息。每期周报将从 NFT 市场数据,艺术新闻类,游戏新闻类,虚拟…

什么是deepseek?

AI国产免费开源强大 DeepSeek 是由国内团队开发的一款开源人工智能工具库,专注于提供高效易用的 AI 模型训练与推理能力。它既包含预训练大语言模型(如 DeepSeek-R1 系列),也提供配套工具链,助力开发者快速实现 AI 应用…

容器服务基础

1.腾讯云容器服务 使用该服务,开发者将无需安装、运维、扩展您的集群管理基础设施,只需进行简单的API调用,便可启动和停止 Docker 应用程序,查询集群的完整状态,以及使用各种云服务。 创建集群--创建工作负载/创建ingr…

C++基础知识(二)之数据类型、指针和内存、数组

六、C数据类型 1、sizeof运算符 sizeof运算符用于求数据类型或变量占用的内存空间。 用于数据类型:sizeof(数据类型) 用于变量:sizeof(变量名) 或 sizeof 变量名 注意: 在32位和64位操作系统中,同一种数据类型占用的内存空间…

LLMs之DeepSeek r1:Logic-RL的简介、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek r1:Logic-RL的简介、安装和使用方法、案例应用之详细攻略 目录 Logic-RL的简介 1、Logic-RL的特点 2、性能 Logic-RL 的安装和使用方法 1、安装 2、使用方法 数据准备 基础模型 指令模型 训练执行 实现细节 Logic-RL的案例应用 Logic-RL…

【神经网络框架】非局部神经网络

一、非局部操作的数学定义与理论框架 1.1 非局部操作的通用公式 非局部操作(Non-local Operation)是该研究的核心创新点,其数学定义源自经典计算机视觉中的非局部均值算法(Non-local Means)。在深度神经网络中,非局部操作被形式化为: 其中: 1.2 与传统操作的对比分析…

22.[前端开发]Day22-CSS单位-CSS预处理器-移动端视口

1 CSS常见单位详解 CSS中的单位 CSS中的绝对单位( Absolute length units ) CSS中的相对单位( Relative length units ) 1.em: 相对自己的font-size;如果自己没有设置, 那么会继承父元素的font-size 2.如果font-size中…

URL调用本地Ollama模型

curl http://192.168.2.247:11434/api/generate -d "{ \"model\": \"deepseek-r1:8b\", \"prompt\": \"Who r u?\" ,\"stream\":false}" 连续对话

【python】matplotlib(animation)

文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…

ubuntu24.04安装布置ros

最近换电脑布置机器人环境,下了24.04,但是网上的都不太合适,于是自己试着布置好了,留作有需要的人一起看看。 文章目录 目录 前言 一、确认 ROS 发行版名称 二、检查你的 Ubuntu 版本 三、安装正确的 ROS 发行版 四、对于Ubuntu24…

接入 deepseek 实现AI智能问诊

1. 准备工作 注册 DeepSeek 账号 前往 DeepSeek 官网 注册账号并获取 API Key。 创建 UniApp 项目 使用 HBuilderX 创建一个新的 UniApp 项目(选择 Vue3 或 Vue2 模板)。 安装依赖 如果需要在 UniApp 中使用 HTTP 请求,推荐使用 uni.requ…