Nginx学习笔记:常用命令端口占用报错解决Nginx核心配置文件解读

Nginx

  • 1. 基础命令
    • 1.1 重新加载systemd配置
    • 1.2 停止Nginx服务
    • 1.3 启动Nginx服务
    • 1.4 重启Nginx服务
    • 1.5 查看Nginx服务状态
    • 1.6 测试配置和重载Nginx
  • 2. 额外命令
    • 2.1 启用开机自启
    • 2.2 禁用开机自启
    • 2.3 强制关闭所有Nginx进程
  • 3. Nginx端口占用解决方案
    • 3.1 查找占用端口8090的进程
    • 3.2 终止占用端口的进程
    • 3.3 验证端口是否已被释放
    • 3.4 重新启动Nginx
    • 3.5 修改Nginx配置(可选)
  • 4. Nginx配置文件
    • 4.1 Web前端资源目录
    • 4.2 Conf 配置文件
      • 4.2.1 基本配置
      • 4.2.2 默认根目录
      • 4.2.3 特定路径处理
    • 4.3 PID(进程标识符)
      • 4.3.1 nginx.conf 中的 PID
      • 4.3.2 nginx.service 中的 PID

Nginx(发音为 “engine-x”)是一款高性能的开源Web服务器软件,同时也可用作反向代理、负载均衡器和HTTP缓存。最初由俄罗斯程序员Igor Sysoev开发,并于2004年首次公开发布。Nginx以其高效的并发处理能力、低资源消耗以及高可靠性而著称,特别适用于高流量网站。

1. 基础命令

这些命令适用于大多数Linux发行版,如Ubuntu, CentOS等,它们使用systemd作为初始化系统和服务管理器。

1.1 重新加载systemd配置

当您修改了Nginx的配置文件后,需要重新加载systemd以识别这些更改。

sudo systemctl daemon-reload

1.2 停止Nginx服务

sudo systemctl stop nginx

1.3 启动Nginx服务

sudo systemctl start nginx

1.4 重启Nginx服务

如果您对配置进行了更改,并希望这些更改生效,可以使用restart命令。

sudo systemctl restart nginx

1.5 查看Nginx服务状态

用于检查Nginx服务的状态,包括是否正在运行、最后一次启动时间等信息。

sudo systemctl status nginx

1.6 测试配置和重载Nginx

每次修改配置文件后,使用以下命令进行测试并重载Nginx。

sudo nginx -t      # 测试配置文件是否正确
sudo systemctl reload nginx  # 重新加载配置

2. 额外命令

2.1 启用开机自启

确保Nginx服务随系统启动而自动启动。

sudo systemctl enable nginx

2.2 禁用开机自启

相反地,如果我们不希望Nginx随系统启动而自动启动,可以使用如下命令。

sudo systemctl disable nginx

2.3 强制关闭所有Nginx进程

仅建议在常规停止方法(如systemctl stop nginx)不起作用时使用。

pkill -9 nginx

请注意,直接杀掉Nginx进程(使用pkill -9 nginx)可能会导致数据丢失或损坏,因为它不会给Nginx机会正常关闭连接和保存状态。因此,尽量使用systemctl stop或其他推荐的方法来停止服务。

3. Nginx端口占用解决方案

错误信息 nginx: [emerg] bind() to 0.0.0.0:8090 failed (98: Address already in use) 表明端口8090已经被其他进程占用,导致Nginx无法绑定到该端口。要解决这个问题,我们需要找出并处理占用该端口的进程。以下是具体的步骤:

3.1 查找占用端口8090的进程

在Linux系统中,可以使用以下命令来查找哪个进程正在使用端口8090:

sudo lsof -i :8090

或者使用netstatss命令(如果已安装):

sudo netstat -tuln | grep :8090
sudo ss -tuln | grep :8090

这些命令将显示占用端口8090的进程ID(PID)和相关信息。

3.2 终止占用端口的进程

找到占用端口8090的进程后,你可以通过其PID终止该进程。假设PID为12345,可以使用以下命令终止它:

sudo kill 12345

如果进程无法正常终止,可以强制终止:

sudo kill -9 12345

注意:请确保你终止的是正确的进程,并且了解终止该进程可能带来的影响。

3.3 验证端口是否已被释放

再次运行上述命令(如lsof -i :8090),确认端口8090已经不再被任何进程占用。

3.4 重新启动Nginx

现在尝试重新启动Nginx:

sudo systemctl restart nginx

或者

sudo service nginx restart

3.5 修改Nginx配置(可选)

如果我们不想终止占用端口8090的进程,可以选择修改Nginx配置文件,使用另一个未被占用的端口。编辑Nginx配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 目录下的某个文件),找到监听端口的部分,例如:

server {listen 8090;...
}

将其改为另一个可用端口,如8091:

server {listen 8091;...
}

然后保存更改,并重新加载Nginx配置:

sudo nginx -s reload

通过以上步骤,我们应该能够解决端口冲突的问题,并使Nginx成功启动。

4. Nginx配置文件

4.1 Web前端资源目录

假设我们的Web前端资源文件夹目录长这样:

/home/miqi/web/
├── first/                    # 默认根目录
│   ├── index.html            # 默认首页文件
│   ├── index.htm             # 另一个默认首页文件(如果有)
│   └── resources/            # 资源文件夹
│       ├── images/           # 图片文件
│       ├── css/              # CSS 样式表
│       └── js/               # JavaScript 文件
│
├── news/                     # 对应 /category/180918.html
│   ├── 180918.html           # 指定的HTML文件
│   ├── index.html            # 其他可能的首页文件
│   ├── index.htm             # 其他可能的首页文件(如果有)
│   └── resources/            # 资源文件夹
│       ├── images/           # 图片文件
│       ├── css/              # CSS 样式表
│       └── js/               # JavaScript 文件
│
├── about/                    # 对应 /category/180917.html
│   ├── 180917.html           # 指定的HTML文件
│   ├── index.html            # 其他可能的首页文件
│   ├── index.htm             # 其他可能的首页文件(如果有)
│   └── resources/            # 资源文件夹
│       ├── images/           # 图片文件
│       ├── css/              # CSS 样式表
│       └── js/               # JavaScript 文件
│
├── online/                   # 对应 /category/180920.html
│   ├── 180920.html           # 指定的HTML文件
│   ├── index.html            # 其他可能的首页文件
│   ├── index.htm             # 其他可能的首页文件(如果有)
│   └── resources/            # 资源文件夹
│       ├── images/           # 图片文件
│       ├── css/              # CSS 样式表
│       └── js/               # JavaScript 文件
│
├── product/                  # 对应 /category/180919.html
│   ├── 180919.html           # 指定的HTML文件
│   ├── index.html            # 其他可能的首页文件
│   ├── index.htm             # 其他可能的首页文件(如果有)
│   └── resources/            # 资源文件夹
│       ├── images/           # 图片文件
│       ├── css/              # CSS 样式表
│       └── js/               # JavaScript 文件
│
├── contact/                  # 对应 /category/180921.html
│   ├── 180921.html           # 指定的HTML文件
│   ├── index.html            # 其他可能的首页文件
│   ├── index.htm             # 其他可能的首页文件(如果有)
│   └── resources/            # 资源文件夹
│       ├── images/           # 图片文件
│       ├── css/              # CSS 样式表
│       └── js/               # JavaScript 文件
│
└── client/                   # 对应 /category/180928.html├── 180928.html           # 指定的HTML文件├── index.html            # 其他可能的首页文件├── index.htm             # 其他可能的首页文件(如果有)└── resources/            # 资源文件夹├── images/           # 图片文件├── css/              # CSS 样式表└── js/               # JavaScript 文件

4.2 Conf 配置文件

这时候就会有一个位于 /usr/local/nginx/conf/nginx.conf 的Nginx服务器核心配置文件,主要用于定义服务器的全局设置、HTTP和流模块的配置参数,以及对前端响应进行精细化控制。在其中是server字段中

server {listen       8090;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   /home/miqi/web/first/;index  index.html index.htm;}location /category/180918.html {alias   /home/miqi/web/news/;index  180918.html index.html index.htm;}location /category/180917.html {alias   /home/miqi/web/about/;index  180917.html index.html index.htm;}   location /category/180920.html {alias   /home/miqi/web/online/;index  180920.html index.html index.htm;}   location /category/180919.html {alias   /home/miqi/web/product/;index  180919.html index.html index.htm;}  location /category/180921.html {alias   /home/miqi/web/contact/;index  180921.html index.html index.htm;}  location /category/180928.html {alias   /home/miqi/web/client/;index  180928.html index.html index.htm;}  

这段Nginx配置文件定义了一个虚拟服务器,监听在8090端口,并且为不同的URL路径设置了不同的处理规则。以下是对每个部分的详细解释:

4.2.1 基本配置

server {listen       8090;server_name  localhost;
  • listen 8090;:指定服务器监听8090端口。
  • server_name localhost;:指定服务器名称为localhost,即只响应来自本地主机的请求。

4.2.2 默认根目录

location / {root   /home/miqi/web/first/;index  index.html index.htm;
}
  • location / { ... }:匹配根路径(/)的所有请求。
  • root /home/miqi/web/first/;:指定文档根目录为 /home/miqi/web/first/。这意味着所有对根路径的请求都会从这个目录中查找文件。
  • index index.html index.htm;:如果请求的是一个目录,则尝试返回 index.htmlindex.htm 文件作为默认首页。

4.2.3 特定路径处理

接下来的部分定义了多个特定路径的处理规则,使用 alias 指令来指定这些路径对应的物理目录。

location /category/180918.html {alias   /home/miqi/web/news/;index  180918.html index.html index.htm;
}
  • location /category/180918.html { ... }:匹配 /category/180918.html 路径的请求。
  • alias /home/miqi/web/news/;:将请求映射到 /home/miqi/web/news/ 目录下。注意,alias 会替换整个匹配部分(包括 /category/180918.html),所以实际访问的是 /home/miqi/web/news/180918.html
  • index 180918.html index.html index.htm;:指定优先级最高的索引文件是 180918.html,其次是 index.htmlindex.htm

4.3 PID(进程标识符)

在Nginx的配置和管理中,nginx.confnginx.service 所涉及的PID(进程标识符)有不同的用途和配置方式。

4.3.1 nginx.conf 中的 PID

nginx.conf 文件中,你可以指定一个指令来定义 Nginx 主进程写入其PID的位置。这个指令是 pid。默认情况下,Nginx 的PID文件路径可能取决于操作系统和安装方式,但通常位于 /var/run/nginx.pid/usr/local/nginx/logs/nginx.pid。你可以在 nginx.conf 中通过如下方式自定义PID文件的位置:

pid /path/to/nginx.pid;

这条指令指定了Nginx主进程将它的进程ID写入到哪个文件中。这对于控制Nginx进程(例如发送信号重启或停止服务)非常有用。

4.3.2 nginx.service 中的 PID

nginx.service 文件是 systemd 服务单元文件的一部分,用于定义如何启动和管理Nginx服务。在这个文件中,PIDFile选项用于告诉systemd在哪里找到服务的PID文件。这有助于systemd跟踪服务的状态和进程ID。如果Nginx使用默认的PID文件位置,则 nginx.service 可能包含如下行:

[Service]
PIDFile=/run/nginx.pid

这里假设PID文件位于 /run/nginx.pid。如果你在 nginx.conf 中更改了PID文件的位置,确保同样更新 nginx.service 文件中的 PIDFile 路径以保持一致性,这样systemd才能正确地管理和监控Nginx服务。

总之,nginx.conf 中的 pid 指令用于指定Nginx应该将自己的PID写入到哪个文件,而 nginx.service 中的 PIDFile 则告知systemd该去哪里查找此PID文件,以便进行服务管理。调整这两个设置时,请确保它们指向相同的PID文件位置。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB在投资组合优化中的应用:从基础理论到实践

引言 投资组合优化是现代金融理论中的核心问题之一,旨在通过合理配置资产,实现风险与收益的最佳平衡。MATLAB凭借其强大的数学计算能力和丰富的金融工具箱,成为投资组合优化的理想工具。本文将详细介绍如何使用MATLAB进行投资组合优化&#…

Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器

目录 登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1 介绍2.3.2 生成和校…

【实战篇】【深度介绍 DeepSeek R1 本地/私有化部署大模型常见问题及解决方案】

引言 大家好!今天我们来聊聊 DeepSeek R1 的本地/私有化部署大模型。如果你正在考虑或者已经开始了这个项目,那么这篇文章就是为你准备的。我们会详细探讨常见问题及其解决方案,帮助你更好地理解和解决在部署过程中可能遇到的挑战。准备好了…

大模型本地部署及本地知识库构建

1、引言 随着AI技术的快速发展和普及,越来越多的LLM开始开源,若想在本地尝试部署大模型和搭建知识库,可以使用ollamaLLMscherry Studio nomic-embed-text的框架来实现,以便于对AI简单应用流程的整体了解。本地部署和知识库的搭建…

在 Ansys Motion 中创建链式伸缩臂的分步指南

介绍 链传动在负载和/或运动要远距离传递的机器中非常多产,例如,在两个平行轴之间。链条驱动系统的设计需要了解载荷传递和运动学如何影响链条张力、轴轴承中的悬臂载荷、轴应力和运动质量等。使用 Ansys Motion,可以轻松回答上述所有问题以…

blender笔记2

一、物体贴地 物体->变换->对齐物体 ->对齐弹窗(对齐模式:反方,相对于:场景原点,对齐:z)。 之后可以设置原点->原点--3d游标 二、面上有阴影 在编辑模式下操作过后,物体面有阴影。 数据-&g…

SPRING10_SPRING的生命周期流程图

经过前面使用三大后置处理器BeanPostProcessor、BeanFactoryPostProcessor、InitializingBean对创建Bean流程中的干扰,梳理出SPRING的生命周期流程图如下

光子集成电路加速边缘AI推理:突破传统NPU的能效比极限

引言:边缘计算的能耗困局 某领先自动驾驶公司采用128核光子张量处理器后,激光雷达点云处理能效比达458TOPS/W,是传统车规级GPU方案的57倍。在16线束LiDAR实时语义分割任务中,光子矩阵乘法单元将特征提取延迟从8.3ms降至0.12ms&am…

【EndNote】WPS 导入EndNote 21

写在前面:有没有人有激活码,跪求! EndNote,在文献管理和文献引用方面很好用。写文章的时候,使用EndNote引入需要的文献会很方便。我目前用的WPS,想把EndNote的CWYW(Cite While You Write&#…

2025.2.23机器学习笔记:PINN文献阅读

2025.2.23周报 一、文献阅读题目信息摘要Abstract创新点网络架构架构A架构B架构C 实验结论后续展望 一、文献阅读 题目信息 题目: Physics-Informed Neural Networks for Modeling Water Flows in a River Channel期刊: IEEE TRANSACTIONS ON ARTIFICI…

SpringBoot 配置文件

介绍 配置文件时用来解决硬编码问题,把可能会发生改变的信息放在一个集中的地方也就说配置文件上,当我们启动某个程序的时候,应用程序会从配置文件中读取数据,并加载运行。 硬编码是指将数据直接嵌入到源代码中,也就…

Redis三剑客解决方案

文章目录 缓存穿透缓存穿透的概念两种解决方案: 缓存雪崩缓存击穿 缓存穿透 缓存穿透的概念 每一次查询的 key 都不在 redis 中&#xff0c;数据库中也没有。 一般都是属于非法的请求&#xff0c;比如 id<0&#xff0c;比如可以在 API 入口做一些参数校验。 大量访问不存…

LeeCode题库第二十八题

28.找出字符串第一个匹配项的下标 项目场景&#xff1a; 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 …

亚马逊AI图像模型Nova深度体验(含源代码)(上)

在本系列的上篇中&#xff0c;我们介绍了如何利用Amazon Nova Canvas进行创意图片内容生成&#xff0c;并使用Amazon Bedrock的InvokeModel API进行文本到图像&#xff08;文生图&#xff09;的生成。并且介绍了Nova Canvas提供的广泛的功能&#xff0c;包括图像修复、画布扩展…

【MySQL】第八弹---全面解析数据库表的增删改查操作:从创建到检索、排序与分页

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】 目录 1 表的增删改查 1.1 Create 1.1.1 单行数据 全列插入 1.1.2 多行数据 指定列插入 1.1.3 插入否则更新 1.1.4 替…

标量化rknn的输入输出向量转换处理

这是一篇技术探索。yolo11模型生成后&#xff0c;我发现它无法在rknn环境正确识别出目标对象。而在宿主机上&#xff0c;或者直接调用.pt转换过的.onnx模型是可以得到正确结果的。这篇文章对应近乎一天的工作。最终的结论就是。这是一个模型量化的问题&#xff0c;与yolo的版本…

边缘安全加速(Edge Security Acceleration)

边缘安全加速&#xff08;Edge Security Acceleration&#xff0c;简称ESA&#xff09;是一种通过将安全功能与网络边缘紧密结合来提升安全性和加速网络流量的技术。ESA的目标是将安全措施部署到接近用户或设备的地方&#xff0c;通常是在网络的边缘&#xff0c;而不是将所有流…

图表控件Aspose.Diagram入门教程:使用 Python 将 VSDX 转换为 PDF

将VSDX转换为PDF可让用户轻松共享图表。PDF 文件保留原始文档的布局和设计。它们广泛用于演示文稿、报告和文档。在这篇博文中&#xff0c;我们将探讨如何在 Python 中将 VSDX 转换为 PDF。 本文涵盖以下主题&#xff1a; Python VSDX 到 PDF 转换器库使用 Python 将 VSDX 转…

两相四线步进电机的步距角为什么是1.8度

机缘 在CSDN查了好多文章&#xff0c;发现都是用公式来解释1.8的步距角&#xff08;Q&#xff1d;360&#xff0f;MZ&#xff09;&#xff0c;因为转子是50齿&#xff0c;4拍一个循环&#xff0c;所以θ360度/&#xff08;50x4&#xff09;1.8度。估计第一次接触步进电机的什么…