Linux 配置 Nginx 服务完整详细版
目录
前言
配置Nginx监听端口和服务器块
# 防DDoS配置
# 日志配置
# 设置服务器块
监听端口
网站根目录
默认文件
静态文件目录
图像文件目录
# 自定义错误页面
# 反向代理配置
# 配置SSL/TLS
1、获取SSL/TLS证书
2、安装证书
3、配置SSL/TLS
# 配置SSL协议版本和密码套件
# 配置SSL会话缓存
# 启用HSTS标头,告诉浏览器始终使用HTTPS
# 防止点击劫持
# 安全头部配置
前言
当你需要配置Nginx服务器来托管网站或应用程序时,以下是一些基本步骤和示例配置,以帮助你入门。请注意,Nginx的配置可以非常灵活,可以根据你的具体需求进行自定义。以下示例假设你已经在服务器上安装了Nginx。
1、打开终端并登录到你的服务器。
2、使用文本编辑器(比如nano或vim)打开Nginx配置文件。
配置文件通常位于 /etc/nginx/nginx.conf或 /etc/nginx/sites-available/default,具体位置可能因你的操作系统而异。以下是使用vim编辑器的示例:
sudo vim /etc/nginx/nginx.conf
配置Nginx监听端口和服务器块
在nginx.conf中,你可以找到一个名为http的块,其中包含Nginx的全局配置。你可以更改默认监听端口(默认为80)和添加服务器块。
# HTTP模块配置段
http {# 防DDoS配置limit_req_zone $binary_remote_addr zone=ddos:10m rate=10r/s;# 日志配置access_log /var/log/nginx/access.log;# 设置服务器块server {listen 80; # 监听端口server_name example.com; # 域名location / {root /var/www/html; # 网站根目录index index.html; # 默认文件}location /static/ {alias /var/www/static/; # 静态文件目录}location /images/ {alias /var/www/images/; # 图像文件目录}# 自定义错误页面error_page 404 /404.html;location = /404.html {root /var/www/html;internal;}# 反向代理配置location /api/ {proxy_pass http://backend-server; # 后端服务器地址}# 配置SSL/TLSlisten 443 ssl;server_name example.com;ssl_certificate /path/to/your/certificate.crt;ssl_certificate_key /path/to/your/private-key.key;# 配置SSL协议版本和密码套件ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers off;ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';# 配置SSL会话缓存ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;# 启用HSTS标头,告诉浏览器始终使用HTTPSadd_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";# 防止点击劫持add_header X-Frame-Options SAMEORIGIN;# 安全头部配置add_header X-Content-Type-Options "nosniff";add_header X-XSS-Protection "1; mode=block";add_header X-Frame-Options "SAMEORIGIN";}
}
# 防DDoS配置
limit_req_zone: 这是一个Nginx指令,用于定义一个请求限制区域。这个区域用来记录每个客户端的请求频率信息。
$binary_remote_addr: 这是一个Nginx变量,表示客户端的IP地址。每个不同的IP地址都会被视为一个单独的客户端。
zone=ddos:10m: 这个部分定义了请求限制区域的名称为"ddos",并分配了10兆字节的内存空间(10m)来存储相关数据。
rate=10r/s: 这部分规定了请求速率限制。它表示每个IP地址最多允许发送10个请求每秒(10r/s)。
# 日志配置
access_log 是 Nginx 配置指令,用于定义访问日志的设置。
/var/log/nginx/access.log 是日志文件的路径,它告诉 Nginx 将访问日志写入到名为 access.log 的文件中。通常,Nginx 日志文件会放在 /var/log/nginx/ 目录下。
# 设置服务器块
监听端口
监听端口是指在计算机网络中,一台计算机或网络设备通过指定一个特定的网络端口号来等待和接收传入的网络连接或数据流。每个网络服务或应用程序可以监听一个或多个端口,这些端口用于标识不同的网络服务或通信通道。
网站根目录
网站根目录(也称为网站根文件夹、网站根文件目录或网站根目录结构)是一个Web服务器上的主要文件夹,它包含了构成整个网站的文件和资源。这个目录通常是Web服务器用来提供网站内容的起点,也是访问网站时的默认基础路径。
默认文件
当你访问一个网站时,通常会看到网站的首页或默认页面。这个默认页面被称为索引文件,它是网站的第一个展示给访问者的页面。
静态文件目录
静态文件目录是一个包含网站的静态文件(不需要服务器端处理的文件)的文件夹或目录。这些静态文件可以包括HTML、CSS、JavaScript、图像、字体文件等,它们不需要在服务器端动态生成或处理,而是直接提供给客户端浏览器。
图像文件目录
图像文件目录是一个用于存储网站或应用程序中的图像文件的文件夹或目录。这些图像文件可以包括各种图像类型,例如JPEG、PNG、GIF、SVG等。图像文件目录通常用于组织和管理网站中的图像资源,使其能够在网页上展示或通过链接提供给用户。
# 自定义错误页面
这个配置告诉Nginx当发生404错误时,将用户重定向到/404.html页面。location块内的root指令定义了404页面所在的目录,这里是/var/www/html。internal指令用于限制该location仅在Nginx内部处理,不会向外部暴露这个页面的路径。
# 反向代理配置
location /api/ { ... }: 这是一个location块,指定了要处理以/api/开头的URL路径的请求。只有满足这个条件的请求会进入这个location块中进行处理。
proxy_pass http://backend-server;: 这是配置块中最重要的部分。它指定了Nginx应该将请求转发到的后端服务器的地址。
例如,如果你的后端服务器的地址是http://localhost:8000,那么这里应该写成 proxy_pass http://localhost:8000;。
# 配置SSL/TLS
1、获取SSL/TLS证书
首先,您需要获取SSL/TLS证书。您可以从权威的证书颁发机构(如Let's Encrypt、Comodo、DigiCert等)购买证书,或者使用自签名证书。自签名证书适用于测试和开发环境,但在生产环境中,建议使用受信任的证书颁发机构颁发的证书,以确保浏览器和客户端的兼容性。
2、安装证书
获得证书后,需要将其安装到服务器上。通常,证书文件包括一个公钥文件(通常以.crt或.pem为扩展名)和一个私钥文件(通常以.key为扩展名)。将这些文件存储在服务器上的安全位置。
3、配置SSL/TLS
在配置文件中,找到与SSL/TLS相关的部分,在Nginx中,通常是在server块内配置SSL。
server { ... }: 这是一个Nginx服务器块,用于定义服务器的配置。
listen 443 ssl;: 这一行指定服务器监听的端口是443,并启用SSL加密。所有传入的HTTPS请求都将在这个端口上被处理。
server_name example.com;: 这里定义了服务器的域名。
ssl_certificate /path/to/your/certificate.crt; 这行指定了SSL证书的路径,该证书用于加密传输的数据。
ssl_certificate_key /path/to/your/private-key.key;: 这行指定了SSL私钥文件的路径,用于解密传入的加密数据。
# 配置SSL协议版本和密码套件
配置SSL协议版本和密码套件通常不需要更改为自己的,因为这部分配置是针对服务器的安全性和性能进行优化的。
ssl_protocols 指定了支持的TLS版本,通常TLSv1.2和TLSv1.3是安全的选择,无需更改,除非你有特定的需求。
ssl_prefer_server_ciphers 设置为 off 以确保Nginx不会强制使用服务器端密码套件的顺序,通常无需更改。
ssl_ciphers 定义了支持的密码套件,使用ECDHE(椭圆曲线Diffie-Hellman Ephemeral)密钥交换和AES-GCM模式,通常无需更改。
# 配置SSL会话缓存
这两行配置是用于配置SSL会话缓存的设置,它们对于提高服务器的SSL/TLS性能非常重要。让我解释它们的含义:
ssl_session_cache shared:SSL:10m;:这行配置指定了SSL会话缓存的类型、名称和大小。
10m:这部分指定了会话缓存的大小。在示例中,缓存的大小被设置为10兆字节(MB)。这意味着服务器可以存储大约10兆字节的SSL会话数据。
ssl_session_timeout 10m;:这行配置指定了SSL会话在缓存中的超时时间。
10m:这部分指定了会话的超时时间,与上面的缓存大小相对应。在示例中,会话将在10分钟后过期并从缓存中删除。
# 启用HSTS标头,告诉浏览器始终使用HTTPS
max-age=31536000:指定了HSTS策略的持续时间,以秒为单位。在这里,max-age 被设置为31536000秒,等于一年的时间。这意味着一旦浏览器接收到这个HSTS标头,它将在一年内记住你的网站,并强制使用HTTPS连接访问。
# 防止点击劫持
这个配置的目的是增强网站的安全性,防止点击劫持攻击,其中攻击者将您的网页嵌套到他们的恶意网站中,以欺骗用户。通过设置X-Frame-Options为SAMEORIGIN,您告诉浏览器只允许您的网页在相同的源内被嵌套,从而提高了您的网站的安全性
# 安全头部配置
1、X-Content-Type-Options "nosniff":
X-Content-Type-Options 头部用于控制浏览器是否应该执行MIME类型嗅探。
"nosniff" 指令告诉浏览器不要执行嗅探,即使服务器返回的响应中包含了不一致的MIME类型信息,浏览器也不会尝试猜测响应的内容类型。
这有助于防止MIME类型混淆攻击,其中攻击者可能会在响应中注入恶意内容,并依赖浏览器错误地解释响应的MIME类型。
2、X-XSS-Protection "1; mode=block":
X-XSS-Protection 头部用于启用浏览器内置的跨站点脚本(XSS)过滤器。
"1; mode=block" 指令启用了XSS过滤器,并在检测到潜在XSS攻击时,将页面设置为阻止加载。
这有助于防止XSS攻击,其中攻击者尝试在网页中注入恶意脚本以执行恶意操作,如窃取用户信息或劫持用户会话。
3、X-Frame-Options "SAMEORIGIN":
X-Frame-Options 头部用于控制是否允许将网页嵌入到 <iframe> 中。
"SAMEORIGIN" 指令表示只允许网页在与原始网页相同的域名下嵌套到 <iframe> 中。
这有助于防止点击劫持攻击,其中攻击者可能会尝试将您的网站嵌入到恶意站点中,以欺骗用户进行操作或窃取信息。
相关文章:
Linux 配置 Nginx 服务完整详细版
目录 前言 配置Nginx监听端口和服务器块 # 防DDoS配置 # 日志配置 # 设置服务器块 监听端口 网站根目录 默认文件 静态文件目录 图像文件目录 # 自定义错误页面 # 反向代理配置 # 配置SSL/TLS 1、获取SSL/TLS证书 2、安装证书 3、配置SSL/TLS # 配置SSL协议版本…...

Python实现猎人猎物优化算法(HPO)优化LightGBM回归模型(LGBMRegressor算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...

无涯教程-JavaScript - ODD函数
描述 ODD函数返回四舍五入到最接近的奇数整数的数字。 ODD函数是Excel中的15个舍入函数之一。 语法 ODD (number)争论 Argument描述Required/OptionalNumberThe value to round.Required Notes 无论数字的符号如何,值都将从零舍入到下一个奇数。如果number是一个奇数整数…...

Easyui里的datagrid嵌入select下拉框
问题: 想使用datagird里嵌入select下拉框,并在提交form表单时获取datagrid选中的每行数据里的每个下拉框选中的值。 解决方案: 其中economicIssuesSelect使用下拉框,重点关注 initEconomicIssues(row)方法。这里的方法需要传递ro…...

计算机专业毕业设计项目推荐03-Wiki系统设计与实现(JavaSpring+Vue+Mysql)
Wiki系统设计与实现(JavaSpringVueMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…...

微服务的艺术:构建可扩展和弹性的分布式应用
文章目录 什么是微服务架构?微服务的设计原则1. 基于业务边界划分服务2. 松耦合和强内聚3. 自动化测试和部署4. 监控和日志5. 弹性设计 微服务的实施细节1. 服务发现示例代码:使用Consul进行服务发现 2. 负载均衡示例代码:Nginx配置负载均衡 …...

在PHP8中对数组进行排序-PHP8知识详解
在php8中,提供了丰富的排序函数,可以对数组进行排序操作。常见的排序函数如下几个:sort() 函数、rsort() 函数、asort() 函数、arsort() 函数、ksort() 函数、krsort() 函数、natsort()函数和natcascsort()函数。 1、sort() 函数:…...

Redis混合模式持久化原理
前言 前面文章中我们也介绍过Redis的持久化方式有两种:rdb持久化和aof持久化,具体详情可查看之前文章redis持久化。rdb持久化还是aof持久化它们都有各自的缺点。 rdb和aof缺点 rdb持久化:由于是定期对内存数据快照进行持久化,因此…...
《BPF Performance Tools —— 洞悉Linux系统和应用性能》学习笔记 —— 第一章 介绍(2)
接前一篇文章:《BPF Performance Tools —— 洞悉Linux系统和应用性能》学习笔记 —— 第一章 介绍(1) 1.2 Tracing、Snooping、Sampling、Profiling和Observability是什么? 这些都是用于对分析技术和工具进行分类的术语。 Trac…...
【计算机网络】网络编程接口 Socket API 解读(7)
Socket 是网络协议栈暴露给编程人员的 API,相比复杂的计算机网络协议,API 对关键操作和配置数据进行了抽象,简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解 socket 编程。…...

crypto++下载、安装(VS2017)及加解密使用
crpto 下载按个人喜好下载,我使用了图中框选的8.8.0 Release.解压 安装打开修改以适应本机配置整理至标准库 调用加解密使用 Crypto(也称为Crypto Library或Crypto STL)是一个C密码学库,它提供了各种密码学算法和安全编程工具&…...

R语言画图
简单记录一下 plot(lad_profile_relative$lad, lad_profile_relative$height, type"l", lwd1.5, xlabexpression(paste("LAD ", "(", m^2, m^-3, ")" )), ylab"Height (m)")X轴数据, Y轴数据 type, 标记类型 lw…...

redis 核心数据结构
一、简述 redis是一个开源的使用C语言编写的一个kv存储系统,是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。 除此之外,通过复制、持久化和客户端分片等特性,用户可以很方便地将redis扩展…...

RabbitMQ消息可靠性(一)-- 生产者消息确认
前言 在项目中,引入了RabbitMQ这一中间件,必然也需要在业务中增加对数据安全性的一层考虑,来保证RabbitMQ消息的可靠性,否则一个个消息丢失可能导致整个业务的数据出现不一致等问题,对系统带来巨大的影响,…...

9 种方法使用 Amazon CodeWhisperer 快速构建应用
Amazon CodeWhisperer 是一款很赞的生成式人工智能编程工具。自从在工作中使用了 CodeWhisperer,我发现不仅代码编译的效率有所提高,应用开发的工作也变得快乐起来。然而,任何生成式 AI 工具的有效学习都需要初学者要有接受新工作方式的心态和…...

性能测试-性能工程落地的4个阶段(21)
性能工程按照不同的内容和目的划分为4个阶段,分别是线下单系统压测分析阶段、线下全链路压测分析阶段、生产只读业务压测及容量评估阶段、生产读写业务全链路压测及容量评估阶段。(也可以理解为一个企业性能测试体系的发展阶段) 线下单系统压测分析阶段 针对单系统的性能…...

小程序 navigateBack 携带参数返回的三种方式(详细)
如果觉着主图好看,点个赞,你早晚也会看到这么好看的景色! 第一种方式 getCurrentPages 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。不要尝试修改页面栈,会导致路由以及页面状态错误。不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page …...

通过内网穿透实现远程连接群晖Drive,轻松实现异地访问群晖NAS
文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…...
vue3 + vite常用工具
1. plop 1.1 安装 yarn add plop -D1.2 使用 1.2.1 package.json 配置脚本命令 "scripts": {"dev": "vite --mode dev","build": "vue-tsc --noEmit && vite build","serve": "vite preview"…...

Vue框架分享与总结
总结开发中最常用的vue语法,以及对特定语法的理解。vue官网 文章目录 一、创建vue项目1、使用开发工具创建2、使用命令行创建3、vue框架结构4、Vue文件结构 二、Vue 常用模板语法1、v-if、v-show2、v-for3、v-on4、v-bind5、v-model 三、组件通信1、父组件给子组件传…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...