当前位置: 首页 > news >正文

Nginx高频核心面试题2

目录

    • 高级问题
      • 1. **Nginx中如何实现URL重写?**
      • 2. **如何在Nginx中设置基本的HTTP身份验证?**
      • 3. **如何限制Nginx中的请求速率?**
      • 4. **如何在Nginx中设置自定义错误页面?**
      • 5. **Nginx的`worker_processes`和`worker_connections`参数有什么作用
      • 6. **如何在Nginx中启用Gzip压缩?**
      • 7. **如何使用Nginx进行反向代理?**
      • 8. **如何在Nginx中处理WebSocket连接?**
    • 进阶主题
      • 1. **Nginx中的动态模块是什么?**
      • 2. **如何优化Nginx性能?**
      • 3. **如何在Nginx中配置文件上传限制?**
      • 4. **如何在Nginx中配置CORS(跨域资源共享)?**
      • 5. **如何处理Nginx中的504 Gateway Timeout错误?**

高级问题

1. Nginx中如何实现URL重写?

答案:

Nginx使用rewrite指令实现URL重写,rewrite指令可以在serverlocation块中使用。例如:

server {location / {rewrite ^/old-path/(.*)$ /new-path/$1 permanent;}
}

此配置将所有/old-path/请求重定向到/new-path/

2. 如何在Nginx中设置基本的HTTP身份验证?

答案:

可以通过auth_basic指令设置基本的HTTP身份验证。例如:

server {location /secure/ {auth_basic "Restricted Content";auth_basic_user_file /etc/nginx/.htpasswd;}
}

需要使用工具(如htpasswd)生成.htpasswd文件:

htpasswd -c /etc/nginx/.htpasswd user1

3. 如何限制Nginx中的请求速率?

答案:

可以使用limit_req模块限制请求速率。例如:

http {limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {location / {limit_req zone=one burst=5 nodelay;}}
}

此配置限制每个IP地址每秒一个请求,允许突发请求为5个。

4. 如何在Nginx中设置自定义错误页面?

答案:

可以使用error_page指令设置自定义错误页面。例如:

server {error_page 404 /custom_404.html;location = /custom_404.html {root /var/www/errors;}
}

这将为404错误请求返回/var/www/errors/custom_404.html页面。

5. **Nginx的worker_processesworker_connections参数有什么作用

?**

答案:

  • worker_processes:定义Nginx运行的工作进程数量,通常设置为服务器CPU核心数。
  • worker_connections:定义每个工作进程可以处理的最大连接数,影响服务器的并发能力。
worker_processes 4;
events {worker_connections 1024;
}

以上配置允许Nginx处理约4 * 1024 = 4096个并发连接。

6. 如何在Nginx中启用Gzip压缩?

答案:

可以通过gzip模块启用Gzip压缩,提高传输效率。例如:

http {gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

此配置启用对多种类型文件的Gzip压缩。

7. 如何使用Nginx进行反向代理?

答案:

在Nginx中,反向代理通过proxy_pass指令配置。例如:

server {location / {proxy_pass http://backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

此配置将所有请求代理到http://backend_server

8. 如何在Nginx中处理WebSocket连接?

答案:

WebSocket需要特殊处理以支持长连接。在Nginx中,可以这样配置:

server {location /ws/ {proxy_pass http://backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}
}

此配置支持WebSocket连接升级。

进阶主题

1. Nginx中的动态模块是什么?

答案:

动态模块允许在Nginx运行时加载模块,而不需要重新编译Nginx。通过--add-dynamic-module选项编译模块:

./configure --with-compat --add-dynamic-module=path/to/module
make modules

然后在配置文件中使用load_module指令加载模块:

load_module modules/ngx_http_modsecurity_module.so;

2. 如何优化Nginx性能?

答案:

  • 使用HTTP/2:提高并发连接性能。
  • 启用Gzip压缩:减少传输数据量。
  • 使用缓存:降低后端负载。
  • 优化连接数:合理配置worker_processesworker_connections
  • 限制请求速率:防止恶意请求。
  • 使用SSL缓存:提高HTTPS性能。

3. 如何在Nginx中配置文件上传限制?

答案:

可以通过client_max_body_size指令限制上传文件的大小。例如:

server {location /upload/ {client_max_body_size 10M;}
}

此配置将最大上传限制设置为10MB。

4. 如何在Nginx中配置CORS(跨域资源共享)?

答案:

可以通过设置响应头来实现CORS支持:

server {location /api/ {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';if ($request_method = 'OPTIONS') {return 204;}}
}

5. 如何处理Nginx中的504 Gateway Timeout错误?

答案:

  • 增加超时时间:调整proxy_read_timeoutproxy_connect_timeout
  • 优化后端性能:确保后端服务器响应迅速。
  • 检查网络连接:确保Nginx与后端服务器之间的网络连接正常。
server {location / {proxy_pass http://backend;proxy_read_timeout 90;proxy_connect_timeout 90;}
}

以上是一些常见的Nginx面试问题和答案。熟悉这些问题不仅能帮助你在面试中脱颖而出,还能提高你在实际工作中配置和优化Nginx的能力。

相关文章:

Nginx高频核心面试题2

目录 高级问题1. **Nginx中如何实现URL重写?**2. **如何在Nginx中设置基本的HTTP身份验证?**3. **如何限制Nginx中的请求速率?**4. **如何在Nginx中设置自定义错误页面?**5. **Nginx的worker_processes和worker_connections参数有…...

全面提升PDF编辑效率,2024年五大顶级PDF编辑器推荐!

在这个数字化飞速发展的时代,PDF文件已经成为我们日常工作和学习中不可或缺的一部分。然而,面对PDF文件的编辑和管理,许多人仍然感到困惑和无助。今天,就让我们一起探索几款高效、易用的PDF编辑器,它们将彻底改变你的工…...

代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

写在前边的话 235. 二叉搜索树的最近公共祖先 题目链接 力扣题目链接 题目难度 中等 看到题目的第一想法 看到题目的第一想法,除了昨天做过的普通二叉树的最近祖先的解法利用回溯从底向上搜索,我会想到使用迭代法,但我好像不太会使用到二…...

视频美颜SDK与直播美颜插件在实时视频中的应用

视频美颜技术作为提升视频质量的重要手段,已经成为了许多视频和直播应用中不可或缺的一部分。本篇文章,笔者将探讨视频美颜SDK与直播美颜插件在实时视频中的应用,并分析其在用户体验和技术实现方面的重要性。 一、视频美颜SDK的应用场景 视…...

【Linux】yum(工具篇)

文章目录 前言:什么是软件包yum 的介绍yum源yum源的配置第三方源的配置官方源的配置镜像站点安装wget包备份本地yum源配置网易yum源重新生成yum缓存 前言:什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程…...

3GPP入门

官网地址 3GPP – The Mobile Broadband Standard 协议下载链接 Directory Listing /ftp/specs/archive 总纲 重点series Signalling protocols ("stage 3") - user equipment to network24 series信令Radio aspects25 series3G 基础LTE (Evolved UTRA), LTE-Adva…...

FFmpeg内存对齐简述

目录 引文 行字节数的计算 ffmpeg中的align ffmpeg中的linesize 内容参考 引文 在ffmpeg的使用过程中有时会发现align这个参数,那么这个参数代表什么意思,不同的值会产生什么影响呢,详见下文。 行字节数的计算 理解内存对齐之前首先要…...

手机号码归属地查询接口如何对接?(一)

一、什么是手机号码归属地接口? 通过手机号查询归属地信息、是否虚拟运营商等。 二、手机号码归属地接口适用哪些场景? 例如:市场营销领域 (1)精准营销:企业可以通过手机号归属地查询接口了解客户的大致…...

DDei在线设计器-加载数据

加载数据 本示例演示了怎样加载已有的JSON到设计器中。 如需了解详细的API教程以及参数说明&#xff0c;请参考DDei文档 外部数据JSON demo.vue <script setup lang"ts"> import DDeiEditorView from "ddei-editor"; import { DDeiCoreStandLayou…...

NetLLM: Adapting Large Language Models for Networking.

目录 NetLLM: Adapting Large Language Models for Networking.GlossaryNotesINTRODUCTIONThe Main Roadmap so farNew Opportunities and ChallengesDesign and Contributions BACKGROUNDLearning-Based Networking AlgorithmsLarge Language Models MOTIVATIONNETLLM DESIGNM…...

基于Yolov8面部七种表情检测与识别C++模型部署

表情识别 七种表情识别是一个多学科交叉的研究领域&#xff0c;它结合了心理学、认知科学、计算机视觉和机器学习等学科的知识和技术。 基本概念 表情的定义&#xff1a;表情是人们在情绪体验时面部肌肉活动的结果&#xff0c;是人类情感交流的基本方式之一。基本表情理论&a…...

未确认融资费用含义及会计处理流程

文章目录 一、含义二、会计处理流程2.1、初始计量2.2、后续计量2.3、报表列式 三、实务中的注意事项 一、含义 未确认融资费用: 由于企业现有资金不足&#xff0c;购买资产时选择分期支付款项&#xff0c;导致实际支付的款项大于资产的购入价值&#xff0c;两者的差额就是由于…...

Linux配置go程序为service后台开机自启动

1.编写需要启动的项目路径以及简单配置 sudo nano /etc/systemd/system/go.service#定义服务的元数据和依赖关系。 [Unit] #这是对服务的简短描述。 DescriptionMy Go Service #network.target 是一个虚拟目标&#xff0c;它表示网络服务已经初始化完成。该指令告诉 systemd 在…...

汇舟问卷:完成16份调查,挣了40美金,换算后美滋滋

这个世界有太多的人30​岁&#xff0c;35岁以后&#xff0c;当初没有去做自己想做的工作&#xff0c;没有花时间去坚持想做的工作&#xff0c;他们在选择这份想做的事业的前提被自己的父母朋友爱人阻断了。 他们告诉你&#xff0c;要努力的做好现在的工作&#xff0c;争取升职…...

Nacos 202407月RCE漏洞(0day)与复现

免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、背景与…...

Dynamo修改共享参数绑定的分组——群问题整理005

Hello大家好!我是九哥~ 今天继续给大家分享一些短平快的小教程,是来自群里面的问题。 问题005:Dynamo修改共享参数绑定的分组 今天看到群里询问如何修改参数所在的分组,查了下API,项目参数是不行的,不过共享参数是允许ReInsert()的,那么就好办了。 然后在Document下…...

聚焦汽车软件开发与测试:静态代码扫描、单元测试与集成测试等方面的实践应用

2024年7月18-19日&#xff0c;龙智携汽车软件开发及管理解决方案创新亮相2024 ATC汽车软件与安全技术周。龙智技术支持部负责人&Atlassian认证专家叶燕秀、龙智功能安全高级工程师景玉鑫在活动主会场联合发表了精彩演讲&#xff0c;分享推动汽车软件开发与功能安全的创新实…...

「队列」实现FIFO队列(先进先出队列|queue)的功能 / 手撕数据结构(C++)

概述 队列&#xff0c;是一种基本的数据结构&#xff0c;也是一种数据适配器。它在底层上以链表方法实现。 队列的显著特点是他的添加元素与删除元素操作&#xff1a;先加入的元素总是被先弹出。 一个队列应该应该是这样的&#xff1a; --------------QUEUE-------------——…...

C++ STL中 `set` 和 `multiset` 简单对比

在 C STL 中&#xff0c;set 和 multiset 都是用于存储唯一或重复元素的关联容器&#xff0c;但它们在处理元素的唯一性和特性方面有显著的区别。以下是这两个容器的详细比较&#xff1a; 1. 数据结构 set&#xff1a;基于红黑树&#xff08;自平衡的二叉搜索树&#xff09;实…...

代码随想录算法训练营Day20 | Leetcode 235 二叉搜索树的最近公共祖先 Leetcode 701 二叉搜索树中的插入操作

Leetcode 235 二叉搜索树的最近公共祖先 题目链接&#xff1a;235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 代码随想录题解&#xff1a;代码随想录 (programmercarl.com) 思路&#xff1a;相比普通二叉树更简单&#xff0c;因为二叉搜索树的节点…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...