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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统离线部署MySQL详细教程(带每步骤图文教程)

1、登录官网下载对应的安装包 MySQL :: Developer Zone 2、将压缩包上传到服务器上,这里直接上传到/usr/local路径上 使用sftp工具上传到/usr/local目录上 3、解压压缩包 tar -xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz 4、将mysql-8.0.39-linux-glibc2.17…

鸿蒙开发实战二 TypeScript和JavaScript的区别

简介 基于第一篇文章中提到的:https://mp.csdn.net/mp_blog/creation/editor/143515906 声明式开发范式:采用基于TypeScript声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供UI绘制能力。 类Web开发范式:采…

初学stm32 --- CAN

目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…

Mybatis-Plus:乐观锁与悲观锁

文章目录 一、场景二、乐观锁与悲观锁三、模拟修改冲突3.1 数据库中增加商品表3.2 添加数据3.3 添加实体3.4 添加mapper3.5 测试 四、乐观锁实现流程4.1 Mybatis-Plus实现乐观锁 一、场景 一件商品,成本价是80元,售价是100元。老板先是通知小李&#xf…

MySQL 8.0在windows环境安装及配置

文章目录 一、下载二、安装三、配置环境变量 一、下载 1、先彻底卸载之前的MySQL,并清理其 残留文件 。 2、登录网址https://www.mysql.com/ 3、点击网址左下角“中文”按钮,切换到中文界面 4、点击网页上方的“下载”按钮,然后点击网…

Python 实现 NLP 的完整流程

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

redux 结合 @reduxjs/toolkit 的使用

1,使用步骤 使用React Toolkit 创建 counterStore(store目录下) --> 为React注入store(src下面的index) --> React组件使用store中的数据(组件) 2,例如下面有一个简单加减的…

GDC杂感:怎么提高游戏销量?

1、2018年的一个独立游戏制作人在GDC分享了其教训总结,得奖但销量不佳, 大意是:画面,辨识度的重要性,平庸的游戏容易扑街; 直播对不同类型的作用不同,差别能达到几十倍。 游戏品质与销量并不…

【Kotlin】上手学习之类型篇

一、类型 1.1 基本类型 主要分为 数字及其无符号版布尔字符字符串数组 1.1.1 数字 整数类型 Kotlin 提供了一组表示数字的内置类型。 对于整数,有四种不同大小的类型,因此值的范围也不同: 类型大小(比特数)最小…

迅为RK3576开发板Android 多屏显示

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…

解决关于Xcode16提交审核报错

# 问题描述 The following issues occurred while distributing your application. Asset validation failed Invalid Executable. The executable xxx.app/Frameworks/HappyDNS.framework/HappyDNS contains bitcode.(lD:ef5dd249-731f-4731-8173-8e4a12519352) Asset valida…

语义检索效果差?深度学习rerank VS 统计rerank选哪个

前段时间我开发了一个用白话文搜索语义相近的古诗词的应用(详见:《朋友圈装腔指南:如何用向量数据库把大白话变成古诗词》),但是有时候搜索结果却不让人满意,排名靠前的结果和查询的语义没啥关系&#xff0…

Linux 常用命令 - chmod 【改变文件或目录权限】

简介 “chmod” 这个命令来自于 “change mode” 的缩写,用于更改文件或目录的访问权限。这个命令允许用户设定谁可以读取、写入或执行一个文件。在 Linux 和其他类 Unix 系统中,文件权限对系统安全和用户隐私至关重要。 Linux/Unix 的文件调用权限分为…

基于机器学习的电信用户流失预测与数据分析可视化

完整源码项目包获取→点击文章末尾名片! 背景描述 根据IBM商业社区分享团队描述,该数据集为某电信公司在加利福尼亚为7000余位用户(个人/家庭)提供电话和互联网服务的相关记录。描述用户基本情况,包括每位用户已注册的…

【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)

文章目录 Mysql 5.7 递归查询Mysql 8 实现递归查询Oracle递归示例SQL Server 递归查询示例PostgreSQL 递归查询示例 更多相关内容可查看 Mysql 5.7 递归查询 MySQL 5.7 本身不直接支持标准 SQL 中的递归查询语法(如 WITH RECURSIVE 这种常见的递归查询方式&#xf…

接上篇基于Alertmanager 配置钉钉告警

Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报,进行去重、分组、静默、抑制等操作,并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重:合并相同或相似的警报&…

Qt应用之MDI(多文档设计)

qt creator 版本6.8.0 MinGW 64bit 由此模块可以扩展成设计一个qt文本编辑器。 界面如下 部分功能展示如下 新建文件 打开文件 mdi模式、级联模式和平铺模式 界面和程序构建过程。 1.如图所需.cpp和.h文件 2.mainwindow.ui和tformdoc.ui界面布局如下 不懂什么是Action如何…

软件授权管理中的软件激活向导示例

软件激活向导示例 在软件许可中,提供许可应该是简单和安全的。这适用于想要在中央许可证服务器上创建新许可证的软件开发人员,也适用于需要在其设备上获得许可证的最终用户。如果所讨论的系统有互联网连接,或是暂时的连接,就可以…

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X(车与外界通信)的部分,主要关注于通信安全要求,旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层(数据无异常)、应用…

phpstudy靶场搭建问题

前言: 靶场搭建遇到的问题,记录一下,可能是基础不牢吧,老是遇到奇奇怪怪的问题 思路: 跟着网上的搭建走一遍 内容: 目录 搭建pikachu遇到的问题 搭建pikachu遇到的问题 其实并不是第一次搭建&#x…