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、父组件给子组件传…...
声音生成评价指标——使用声音分类模型评价生成声音质量(基于resnetish、VGGish、AlexNet)
文章目录 引言正文数据预处理将wav转成log-mel频谱图进行保存创建dataset类保存数据 模型定义模型训练过程训练代码定义loss为nan从AlexNet到ResNetloss上下剧烈波动——使用学习率衰减策略学习率调整——根据准确率来调整学习率数据处理问题 模型的测试 总结 引言 这篇文章主要…...
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 六)
AppStorage:应用全局的UI状态存储 AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。 和LocalStorage不同的是,LocalStorage是页面级的&…...
SPA首屏加载速度慢
什么是首屏加载 首屏时间(First Contentful Paint),指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容 首屏加载可以说是用…...
JVM执行流程
一、Java为什么是一种跨平台的语言? 通常,我们编写的java源代码会被JDK的编译器编译成字节码文件,再由JVM将字节码文件翻译成计算机读的懂得机器码进行执行;因为不同平台使用的JVM不一样,所以不同的JVM会把相同的字节码…...
laravel 凌晨0点 导出数据库
一、创建导出模型 <?php namespace App\Models;use Illuminate\Support\Facades\DB;class DbBackup {private $table;public function __construct(){$this->table env(DB_DATABASE);}public function run($file ){$file !$file ? public_path($this->t…...
mysql MVCC多版本并发控制
mvcc的概念 mvcc 的实现依赖于: 隐藏字段 行格式(row_id,trx_id,roll_ponter)UndologRead view innodb 存储引擎的表来说,聚集索引记录中都包含两个必要的隐藏字段,row_id(如果没有聚集索引,才会创建的) …...
new/delete, malloc/free 内存泄漏如何检测
区别: 首先new/delete是运算符,malloc/free是库函数。malloc/free只开辟内存不初始化;new/delete及开辟内存也初始化。抛出异常的方式:new/delete开辟失败使用抛出bad_alloc;malloc/free通过返回值判断。malloc和new区…...
Java开发推荐关注的网站
一、开发者社区 阿里云开发者社区:https://developer.aliyun.com/腾讯云开发者社区:https://cloud.tencent.com/developer 二、开发规范 阿里巴巴Java开发规范 github地址:https://github.com/alibaba/p3c gitcode地址:https:/…...
OpenHarmony社区运营报告(2023年8月)
本月快讯 2023年8月3日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)发布了Beta2版本。OpenHarmony 4.0 Beta2在系统能力、应用框架、分布式通信、媒体功能、安全性等方面进行了全面升级。其中,ArkUI增强了界面组件能力&#x…...
Web学习笔记-React(路由)
笔记内容转载自 AcWing 的 Web 应用课讲义,课程链接:AcWing Web 应用课。 CONTENTS 1. Web分类2. Route组件3. URL中传递参数4. Search Params传递参数5. 重定向6. 嵌套路由 本节内容是如何将页面和 URL 一一对应起来。 1. Web分类 Web 页面可以分为两…...
做影视网站用的封面/济南seo优化公司助力排名
因为一个服务器做了2个bond 0(em1,em2) bond1(em3,em4) 但是默认路由只生成了bond1的默认网关。但是bond1是数据库的心跳线。不是来做数据库数据传输用得。所以导致数据库无法访问。在rc.local 手动添加默认…...
移动端是指手机还是电脑/什么是seo文章
Silverlight DataBinding Converter:根据binding对象调整显示 我希望写一系列关于Silverlight DataBinding的文章,分别讲解Silverlight Binding中不同的功能。本文将会讲的是DataBinding中使用Converter。演示的demo是根据值显示一个小图标,当…...
wordpress 上传幻灯片/百度爱采购推广效果怎么样?
项目介绍 一款 Java 语言基于 SpringBoot2.x、MybatisPlus、Vue、ElementUI、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开发…...
设计素材网站0/公众号软文推广
LBS坐标转换,支持Wgs84、Gcj02、Bd09三种坐标系的互转。 public class GpsCoordinate {#region 地球参数private static readonly double pi 3.1415926535897932384626;private static readonly double a 6378245.0;private static readonly double ee 0.0066934…...
专门做网站代购的盈利路子/职业培训学校
Linux2.6对新型CPU的支持(转)文章分析了在 Linux 2.6 中引入的对 Intel CPU 快速系统调用指令 SYSENTER/SYSEXIT 支持的实现。Linux 驱动及内核开发者通过了解快速系统调用指令的机制,可以在自己的代码中通过利用这一机制,提高系统性能,并避开…...
医院网站建设的规划方案/中国国际新闻
链接:https://www.zhihu.com/question/36735960/answer/68902926来源:知乎要理解C(只谈C11/14之后)的初始化类型,我认为要从最一般类型入手,那就是list initialization,其形式为:[ne…...