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

Nginx实战技巧(Practical Tips for nginx)

引言

简介

‌Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器.‌ Nginx以其高并发处理能力、低资源消耗和灵活的配置而闻名,适用于高流量的Web服务器和应用程序。‌

Nginx的主要功能包括

  1. ‌HTTP服务器‌:Nginx可以作为静态和动态网页的HTTP服务器,处理客户端的HTTP请求。‌
  2. ‌反向代理‌:它将客户端的请求转发到后端的一个或多个服务器上,支持负载均衡,提高应用的可用性和扩展性。‌
  3. ‌负载均衡‌:Nginx可以在多个后端服务器之间分配请求,提高系统的整体性能和稳定性。
  4. ‌缓存‌:提供内置的缓存机制,可以缓存静态内容和后端服务器的响应,提高性能。
  5. ‌SSL/TLS终端代理‌:支持SSL/TLS协议,安全地处理HTTPS请求。
  6. ‌静态内容服务‌:高效地处理静态文件,如图片、视频、CSS和JavaScript文件。
  7. ‌压缩‌:支持Gzip压缩,减少传输数据的大小,加快页面加载速度。
  8. ‌模块化‌:拥有丰富的模块系统,可以通过添加模块来扩展其功能。
  9. ‌配置灵活性‌:配置文件提供了高度的灵活性,允许管理员定制各种服务器行为。
  10. ‌高并发处理能力‌:采用事件驱动和异步非阻塞的处理方式,能够支持数以万计的并发连接。‌
  11. ‌跨平台‌:可以在多种操作系统平台上运行,包括Linux、BSD系列、Mac OS X和Windows。
  12. ‌低资源消耗‌:以轻量级和低内存占用而闻名,即使在低配置的硬件上也能良好运行。
  13. ‌热部署‌:支持热部署,可以在不停止服务的情况下重新加载配置文件,实现零停机时间。
  14. ‌邮件代理‌:可以作为邮件代理服务器,支持SMTP、POP3和IMAP协议。‌
  15. ‌第三方模块和扩展‌:有一个活跃的开发者社区为Nginx提供了大量第三方模块和扩展。

Nginx因其高性能、高可靠性和低资源消耗而广泛应用于现代互联网应用中,是许多高流量网站的首选服务器软件。其灵活的配置和丰富的功能使其成为虚拟主机、负载均衡和缓存等场景的理想选择

​​在互联网时代,服务器安全已成为每位网站管理员必须重视的重要课题。Nginx 作为一种高性能的 Web 服务器,提供了强大的 IP 访问控制功能,可以帮助您有效管理谁可以访问您的网站。本文将介绍如何通过 Nginx 配置 IP 访问控制,确保只有授权用户能够访问您的应用。

一、allow 和 deny 指令

Nginx 的 allow 和 deny 指令可以灵活地控制访问权限。这些指令属于 ngx_http_access_module 模块,默认情况下,Nginx 已经启用该模块。

1. 基本配置示例

在 Nginx 配置文件中(/etc/nginx/nginx.conf),可以按以下方式设置允许访问的 IP 地址:

server {listen 80;server_name example.com;  # 设置白名单location / {allow 192.168.0.10;  # 允许特定IP访问allow 192.168.0.20;deny all;  # 拒绝其他所有IP}# 管理员访问location /admin {allow 192.168.0.30;  # 仅允许特定管理员IPdeny all;}
}

2. 使用外部文件管理白名单

为了方便管理,还可以将 IP 列表放入外部文件中,例如:

location / {include /etc/nginx/whitelist.conf;  # 包含白名单文件deny all;  # 拒绝未在白名单中的IP
}

在 /etc/nginx/ 目录下创建 whitelist.conf 文件并添加需要的 IP:

# 白名单IP
allow 10.0.0.1;
allow 10.0.0.2;

二、ngx_http_geo_module 进行 IP 限制

ngx_http_geo_module 模块可以根据 IP 地址段进行更灵活的访问控制。

1. 配置示例

在 Nginx 配置文件中添加以下内容:

geo $ip_list {default 0;  # 默认值为0192.168.0.0/24 1;  # 白名单IP段
}server {listen 8080;server_name myserver.local;  location / {root /var/www/myapp;index index.html index.htm;if ($ip_list = 0) {return 403;  # 拒绝未授权的IP}}
}

三、国家和地区的访问限制

如果希望根据用户的地理位置限制访问,可以使用 ngx_http_geoip_module 模块。

1. 安装 GeoIP 模块

对于 Ubuntu 用户,可以通过安装 nginx-extras 来获取 GeoIP 模块:

sudo apt install nginx-extras

CentOS 用户可以使用以下命令:

yum install nginx-module-geoip

2. 下载并配置 IP 数据库

GeoIP 模块依赖于 IP 数据库,您需要下载并配置这些数据库:

# 下载国家和城市的 IP 数据库
sudo wget https://dl.miyuru.lk/geoip/maxmind/country/maxmind.dat.gz
gunzip maxmind.dat.gz
sudo mv maxmind.dat /etc/nginx/GeoCountry.datsudo wget https://dl.miyuru.lk/geoip/maxmind/city/maxmind.dat.gz
gunzip maxmind.dat.gz
sudo mv maxmind.dat /etc/nginx/GeoCity.dat

3. 在 Nginx 中配置 GeoIP

在 Nginx 配置文件中添加以下内容以启用 GeoIP:

geoip_country /etc/nginx/GeoCountry.dat;
geoip_city /etc/nginx/GeoCity.dat;server {listen 80;server_name mywebsite.com; location / {root /var/www/html/;index index.html index.htm;if ($geoip_country_code = US) {return 403;  # 拒绝来自美国的访问}}
}

四、总结

通过合理配置 Nginx 的 IP 访问控制,您可以有效防止未授权访问,增强服务器的安全性。无论是通过简单的 IP 白名单,还是基于地理位置的访问限制,Nginx 都能为您的应用提供强有力的保护。希望本文的内容能帮助您更好地理解和实施 Nginx 的访问控制策略,为您的服务器安全保驾护航。

相关文章:

Nginx实战技巧(Practical Tips for nginx)

引言 简介 ‌Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器.‌ Nginx以其高并发处理能力、低资源消耗和灵活的配置而闻名,适用于高流量的Web服务器和应用程序。‌ Nginx的主要功能包括: ‌HTTP服务器…...

YOLOv8:目标检测与实时应用的前沿探索

随着深度学习和计算机视觉技术的迅速发展,目标检测(Object Detection)一直是研究热点。YOLO(You Only Look Once)系列模型作为业界广受关注的目标检测框架,凭借其高效、实时的特点,一直迭代更新…...

解锁数字经济新动能:探寻 Web3 核心价值

随着科技的快速发展,我们正迈入一个全新的数字时代,Web3作为这一时代的核心构成之一,正在为全球数字经济带来革命性的变革。本文将探讨Web3的核心价值,并如何推动数字经济的新动能。 Web3是什么? Web3,通常…...

Lua 环境的安装

1.安装Lua运行环境 本人采用的是在windows系统中使用cmd指令方式进行安装,安装指令如下: winget install "lua for windows" 也曾使用可执行程序安装过,但由于电脑是加密电脑,最后都已失败告终。使用此方式安装可以安…...

Object类(2)

大家好,今天我们继续来看看Object类中一些成员方法,这些方法在实际中有很大的用处,话不多说,来看。 注:所有类都默认继承Object类的,所以可调用Object类中的方法,如equals,也可以发生…...

汽车网络信息安全-ISO/SAE 21434解析(中)

目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…...

fatal error C1083: ޷[特殊字符]ļ: openssl/opensslv.h: No such file or directory

一、环境 1. Visual Studio 2017 2. edk2:202305 3. Python:3.11.4 二、 fatal error C1083: ޷򿪰ļ: openssl/opensslv.h: No such file or directory 上图出现这个警告,不用管。 出现Done,说明编译成功。 执行上…...

C#System.Threading.Timer定时器意外回收注意事项

System.Threading.Timer定时器使用时会出现意外回收的情况。具体解释如下: 只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。 实例对比测试 实例 定义两个类,其中一个…...

20.Word:小谢-病毒知识的科普文章❗【38】

目录 题目​ NO1.2.3文档格式 NO4.5 NO6.7目录/图表目录/书目 NO8.9.10 NO11索引 NO12.13.14 每一步操作完,确定之后记得保存最后所有操作完记得再次删除空行 题目 NO1.2.3文档格式 样式的应用 选中应用段落段落→开始→选择→→检查→应用一个一个应用ctr…...

vue3底层原理和性能优化

Vue 3 在底层原理和性能优化方面做了许多改进,以下是一些主要的优化点和原理: 1. 虚拟 DOM 的改进 静态树提升:Vue 3 能够检测到静态组件(即不依赖响应式数据的组件)并将其提升到渲染函数之外,从而减少不…...

Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat

目录 ?编辑 一、Ubuntu22.04介绍 二、Ubuntu与Centos的区别 三、基于VMware安装Ubuntu Server 22.04 下载 VMware安装 1.创建新的虚拟机 2.选择类型配置 3.虚拟机硬件兼容性 4.安装客户机操作系统 5.选择客户机操作系统 6.命名虚拟机 7.处理器配置 8.虚拟机内存…...

金融级分布式数据库如何优化?PawSQL发布OceanBase专项调优指南

前言 OceanBase数据库作为国产自主可控的分布式数据库,在金融、电商、政务等领域得到广泛应用,优化OceanBase数据库的查询性能变得愈发重要。PawSQL为OceanBase数据库提供了全方位的SQL性能优化支持,助力用户充分发挥OceanBase数据库的性能潜…...

springboot 动态线程池

在Spring Boot中,可以使用ThreadPoolTaskExecutor类来创建动态线程池。以下是一个示例: 首先,需要在配置文件中配置线程池的属性,例如最小线程数、最大线程数、线程存活时间等。可以在application.properties或application.yml中…...

【PySide6快速入门】qrc资源文件的使用

文章目录 PySide6快速入门:qrc资源文件的使用前言什么是qrc文件?qrc文件的作用: qrc文件可以干什么?如何创建qrc文件?1. 创建.qrc文件2. 使用rcc工具编译.qrc文件 如何引用qrc文件并使用资源?示例代码&…...

【creo】CREO配置快捷键方式和默认单位

了解CREO工作目录设置 设置快捷方式启动目录,就能自动加载其中的配置。 一、通过键盘快捷方式 保存配置 creo_parametric_customization.ui 文件: 二、通过映射键录制 通过这种方式可以监听鼠标的点击事件。使用键盘快捷方式无法找到需要的动作时候可…...

STM32使用VScode开发

文章目录 Makefile形式创建项目新建stm项目下载stm32cubemx新建项目IED makefile保存到本地arm gcc是编译的工具链G++配置编译Cmake +vscode +MSYS2方式bilibiliMSYS2 统一环境配置mingw32-make -> makewindows环境变量Cmake CmakeListnijia 编译输出elfCMAKE_GENERATOR查询…...

数据结构与算法再探(六)动态规划

目录 动态规划 (Dynamic Programming, DP) 动态规划的基本思想 动态规划的核心概念 动态规划的实现步骤 动态规划实例 1、爬楼梯 c 递归(超时)需要使用记忆化递归 循环 2、打家劫舍 3、最小路径和 4、完全平方数 5、最长公共子序列 6、0-1背…...

若依基本使用及改造记录

若依框架想必大家都了解得不少,不可否认这是一款及其简便易用的框架。 在某种情况下(比如私活)使用起来可谓是快得一匹。 在这里小兵结合自身实际使用情况,记录一下我对若依框架的使用和改造情况。 一、源码下载 前往码云进行…...

学习数据结构(2)空间复杂度+顺序表

1.空间复杂度 (1)概念 空间复杂度也是一个数学表达式,表示一个算法在运行过程中根据算法的需要额外临时开辟的空间。 空间复杂度不是指程序占用了多少bytes的空间,因为常规情况每个对象大小差异不会很大,所以空间复杂…...

C语言复习

1.进制 三要素:数位(第几位) 基数 位权(当前位对应的值) 二进制:B 八进制:O 十进制:D 十六进制:X 0和1 111 /072 10 …...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

macOS 终端智能代理检测

🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

算法刷题-回溯

今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...

Java设计模式:责任链模式

一、什么是责任链模式? 责任链模式(Chain of Responsibility Pattern) 是一种 行为型设计模式,它通过将请求沿着一条处理链传递,直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者,…...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL(Software OpenGL)‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式(包括几何处理、光栅化、着色等),不依赖GPU硬件加速。这种模式通常性能较低,但兼容性极强,常用于不支持硬件加速…...