Nginx实战技巧(Practical Tips for nginx)
引言
简介
Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器. Nginx以其高并发处理能力、低资源消耗和灵活的配置而闻名,适用于高流量的Web服务器和应用程序。
Nginx的主要功能包括:
- HTTP服务器:Nginx可以作为静态和动态网页的HTTP服务器,处理客户端的HTTP请求。
- 反向代理:它将客户端的请求转发到后端的一个或多个服务器上,支持负载均衡,提高应用的可用性和扩展性。
- 负载均衡:Nginx可以在多个后端服务器之间分配请求,提高系统的整体性能和稳定性。
- 缓存:提供内置的缓存机制,可以缓存静态内容和后端服务器的响应,提高性能。
- SSL/TLS终端代理:支持SSL/TLS协议,安全地处理HTTPS请求。
- 静态内容服务:高效地处理静态文件,如图片、视频、CSS和JavaScript文件。
- 压缩:支持Gzip压缩,减少传输数据的大小,加快页面加载速度。
- 模块化:拥有丰富的模块系统,可以通过添加模块来扩展其功能。
- 配置灵活性:配置文件提供了高度的灵活性,允许管理员定制各种服务器行为。
- 高并发处理能力:采用事件驱动和异步非阻塞的处理方式,能够支持数以万计的并发连接。
- 跨平台:可以在多种操作系统平台上运行,包括Linux、BSD系列、Mac OS X和Windows。
- 低资源消耗:以轻量级和低内存占用而闻名,即使在低配置的硬件上也能良好运行。
- 热部署:支持热部署,可以在不停止服务的情况下重新加载配置文件,实现零停机时间。
- 邮件代理:可以作为邮件代理服务器,支持SMTP、POP3和IMAP协议。
- 第三方模块和扩展:有一个活跃的开发者社区为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 …...
DLSS Swapper终极指南:免费开源工具让游戏DLSS管理变得简单快速
DLSS Swapper终极指南:免费开源工具让游戏DLSS管理变得简单快速 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 如果你正在寻找一款能够智能管理游戏DLSS、FSR和XeSS文件的免费开源工具,那么DLS…...
终极Python通达信数据解析方案:mootdx完整使用指南与金融量化实践
终极Python通达信数据解析方案:mootdx完整使用指南与金融量化实践 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在金融数据分析和量化交易领域,通达信作为国内主流的证券…...
Windows Cleaner终极指南:三步告别C盘爆红,让电脑运行如飞!
Windows Cleaner终极指南:三步告别C盘爆红,让电脑运行如飞! 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows系统…...
Midjourney湿版摄影风格实战手册(从胶片化学原理到Prompt工程):含12组经大英博物馆湿版藏品验证的Reference Prompt库
更多请点击: https://intelliparadigm.com 第一章:湿版摄影的历史溯源与Midjourney风格化转译本质 湿版摄影(Wet Plate Collodion Process)诞生于1851年,由弗雷德里克斯科特阿彻(Frederick Scott Archer&a…...
【仅限前200名】Midjourney铂金印相专属Prompt库泄露:含17组经暗房验证的--v 6.2参数矩阵与胶片光谱校准模板
更多请点击: https://intelliparadigm.com 第一章:Midjourney铂金印相的光学本质与历史语境 铂金印相(Platinum Print)并非数字时代的产物,而是一种诞生于1873年的古典摄影工艺——其影像由铂族金属(主要是…...
免费开源鼠标连点器终极指南:5分钟掌握高效自动化技巧
免费开源鼠标连点器终极指南:5分钟掌握高效自动化技巧 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 ,…...
基于CircuitPython与加速度计的魔法9号球:嵌入式交互项目实践
1. 项目概述:当硬件遇上玄学,用代码打造你的专属“决策神器”在嵌入式开发的世界里,我们常常与传感器、显示屏和逻辑代码打交道,构建着一个个解决实际问题的智能设备。但谁说硬件项目就一定要严肃刻板?今天,…...
Arduino nRF52 BLE开发:GATT服务与特征值配置实战详解
1. 项目概述如果你正在用Arduino和nRF52系列芯片(比如nRF52832或nRF52840)做蓝牙低功耗(BLE)开发,那你肯定绕不开GATT(通用属性配置文件)这一关。GATT是BLE通信的“语言规则”,它定义…...
自建轻量级Docker镜像中心:聚合管理与加速部署实践
1. 项目概述:一个面向容器化开发者的中心化镜像仓库最近在和一些做容器化开发的朋友交流时,大家普遍提到一个痛点:随着团队项目增多,Docker镜像的管理变得越来越零散。有的镜像放在Docker Hub,有的放在阿里云镜像服务&…...
基于Claude的AI招聘系统:从简历解析到智能评估全流程实践
1. 项目概述:当Claude成为你的招聘官最近在GitHub上看到一个挺有意思的项目,叫“hire-from-claude”。光看名字,你可能会觉得有点玄乎,难道是要让AI来面试和招聘人类?其实,这个项目的核心思路,是…...
