一、nginx配置
一、nginx配置
- 配置简介
1)nginx相关目录
工作目录:/etc/nginx
执行文件:/usr/sbin/nginx
日志目录:/var/log/nginx
启动文件:/etc/init.d/nginx
web目录:/var/www/html/,首页文件是index.nginx-debian.html
2)nginx配置文件
默认文件:
/etc/nginx/nginx.conf
其他目录:
/etc/nginx/{sites-enabled/conf.d}
文件结构:
全局配置段
http配置段
server配置段 # 项目或者应用
location配置段 # url配置
-
nginx访问过程原理
-
nginx配置详解
3.1 全局配置段
主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置:
user # 设置使用用户(worker)
worker_processes # 进行增大并发连接数的处理 跟cpu保持一致 八核设置八个
pid # nginx服务启动时候pid
events # 定义事件相关的属性
worker_connections # 一个进程允许处理的最大连接数
use # 定义使用的内核模型
3.2 http配置段
主要配置server通用的一些配置:
include mime.types; # 文件扩展名与文件类型映射表
default_type application/octet-stream; # 默认文件类型
sendfile on; # 开启高效文件传输模式。
autoindex on; # 开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; # 防止网络阻塞
tcp_nodelay on; # 防止网络阻塞
keepalive_timeout 120; # 长连接超时时间,单位是秒
gzip on; # 开启gzip压缩输出
3.3 server配置段
常见样式:
server {
listen :;
server_name <主机域名>;
…
}
注:server配置段最重要的属性是listen和server_name,它们都是用于匹配并处理请求的。
1)listen属性
作用:定义server监听的ip和port,当ip和port匹配时候才进行下一步匹配。
ip:port 地址精确表示样式 listen 10.10.10.10:99 listen 10.10.10.10:99
ip 自动监听 ip:80地址 listen 10.10.10.10 listen 10.10.10.10:80
port 自动监听 全地址:port listen 99或 [::]:99 listen 0.0.0.0:99
default_server 自动使用默认的地址 listen default_server listen localhost:80
使用原则:
首先将所有样式补全成ip:port,然后匹配,如果匹配server多,那么接着使用server_name匹配。
2)server_name属性
作用:定义server监听的域名,当域名匹配时候才进行下一步操作。
形式 www.example.com .example.com www.example. _
使用原则:
优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法规则。 非法域名/IP,表示请求到该主机上一个不存在的IP或者域名。
3)root属性
作用:定义客户端请求的html文件所在目录路径。
表现形式:root /var/www/html;
4)index属性
作用:定义客户端请求时默认返回的文件。
表现形式:index index.html index.htm index.nginx-debian.html;
3.4 location配置段
location主要是根据server匹配到的请求路径去处理和响应。
前提: 根据请求完整url,获取uri(即:除了域名(IP)、Port和路径参数之外的部分),用于location匹配。
语法:
location optional_modifier location_match {
# 执行操作…
}
其中:optional_modifier是匹配条件,location_match是匹配的样式,{}是要执行的操作。
1)匹配规则
= /路径 精确匹配 前缀 1 location = /image {}
^~ 优先匹配 前缀 2 location ^~ /page {}
~ 普通正则-大小写敏感 正则符号 3 location ~ .(jpe?g)$ {}
~* 普通正则-大小写不敏感 正则符号 3 location ~* .(jpe?g)$ {}
空 / 通用匹配 前缀 4 location / {}
空 <路径> 前缀匹配 前缀 * location /index {}
2)匹配优先级
优先级:精确匹配>location 完整路径>优先匹配>正则匹配>location 部分路径>通用匹配
3)匹配示例
location = / { location ~ .(gif|jpg|png|js|css)$ {
#精确规则A #正则规则D
} }
location = /login { location ~* .png$ {
#精确规则B #正则规则E
} }
location ^~ /static/ { location / {
#优先规则C #通用规则F
} }
访问效果如下:
访问 http://a.com/ 将匹配规则A
访问 http://a.com/login 将匹配规则B
访问 http://a.com/static/a.html 将匹配规则C
访问 http://a.com/b.png 规则D和E均适合,按顺序优先使用规则D
访问 http://a.com/static/c.png 则优先匹配到规则C
访问 http://a.com/a.PNG 则匹配规则E,因为规则E不区分大小写
访问 http://a.com/category/id/1111 则最终匹配到规则F
3.5 location核心动作
Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。
1)指令语法
try_files file … uri
try_files file … =code
作用:响应时按顺序查找file,找到则返回file内容,否则的话进行内部重定向(uri)或返回状态码(code)。
2)常见示例
如果能找到指定的uri那么就返回相应的内容,否则的话返回错误状态码404
location / {
try_files $uri $uri/ =404;
}
如果能找到指定的文件1/2.html那么就返回相应的内容,否则的话返回6.html文件内容
location / {
try_files 1.html 2.html /6.html;
}
如果能找到指定的uri那么就返回相应的内容,否则的话就内部重定向到后端名称为@backup的location
location / {
try_files $uri @backup;
}
location @backup {
# …do something
}
注意:如果最后一个地址是一个uri的话,那么这个uri必须是存在的,否则的话就出事了。
3.6 location常见操作
在location内部常用的功能属性非常多,常见的基本属性、临时跳转、目录列表等。
1)基本属性
location / {
# 指定响应请求的文件所在路径
root /var/www/html;
# 指定响应请求的默认文件名称
index index.php index.html index.htm;
# 指定响应请求的文件浏览器缓存过期时间,一般用于静态文件
expires 7d;
# 如果root指定的路径下有查找的文件,就返回,否则报404
try_files $uri $uri/ =404;
}
2)临时跳转
location = /test/ {
return 302 http://www.itcast.cn/;
}
3)目录列表
location /upload {
# 指定查看文件列表路径(绝对路径)
alias /var/www/upload/;
# 开启目录自动索引
autoindex on;
# 默认on,显示文件确切大小(bytes)。off表示显示文件的大概大小(kB/MB/…)
autoindex_exact_size off;
# 默认off,显示的文件时间为GMT时间。on表示显示文件的服务器时间
autoindex_localtime on;
}
注:alias路径结尾必须加/。
3.7 其他说明
1)root VS alias
root 和 alias 所起的作用都是指定响应请求文件所在的路径,只是它们有区别。
root 表示 location 匹配内容的相对路径
alias 表示 一个绝对路径。
一般情况下,在location /中配置root,在location /other中配置alias。
效果一: 效果二:
location /txt/ { location /txt/ {
alias /var/www/txt/; root /var/www/txt/;
} }
效果一:访问http://localhost/txt/1.txt,nginx找/var/www/txt/1.txt文件
效果二:访问http://localhost/txt/1.txt,nginx找/var/www/txt/txt/1.txt文件
2)关于URL尾部的/有如下注意事项
-
location中的location_match字符有无"/"不受影响,/user/等同/user。
-
对于访问网站域名(http://www.smartli.cn/),尾部有无"/“不受影响,因为浏览器会自动补全”/"。
-
对于访问网站域名后面的路径(http://www.smartli.cn/other/),尾部的"/“很重要。
访问URL尾部的”/“表示目录,没有”/"表示文件,而且文件找不到的话,会发生重定向。 -
/other/:表示服务器会自动去该目录下找对应的默认文件。
-
/other:表示服务器会先去找other文件,找不到的话会将other当成目录,重定向到/other/,去该
目录下找默认文件。
总结:
配置文件结构:全局配置段、http配置段、server配置段、location配置段
server配置段
listen:server监听的ip和port
server_name:server的域名
location配置段
匹配优先级:精确匹配>location 完整地址>优先匹配>正则匹配>location 部分地址>通用匹配
root和alias
root:相对目录
alias:绝对目录
【淘宝】https://m.tb.cn/h.566klSo?tk=M6kbWYQpGrJ CZ0001 「pycharm专业版mian费激活,永久使用。」
点击链接直接打开 或者 淘宝搜索直接打开
相关文章:
一、nginx配置
一、nginx配置 配置简介 1)nginx相关目录 工作目录:/etc/nginx 执行文件:/usr/sbin/nginx 日志目录:/var/log/nginx 启动文件:/etc/init.d/nginx web目录:/var/www/html/,首页文件是index.ng…...
win32汇编-LEA指令是将一个内存地址加载到一个寄存器中
LEA (Load Effective Address) 指令是用来将一个内存地址加载到一个寄存器中的指令。 其语法为: lea destination, source 其中,destination 是目标寄存器,source 是一个内存地址(即一个存储器操作数)。 举个例子…...
leetcode做题笔记189. 轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…...
数据库第七章作业
本篇用于日常记录和分享 第7章作业.xls 题量: 25 满分: 100 一. 单选题(共25题) 1. (单选题)二级封锁协议不能保证消除( )这一不一致现象。 A. 读取脏数据B. 死锁C. 不可重复读D. 丢失修改 我的答案: C :不可重复读; 2. (单…...
使用服务器训练模型的注意事项
一、图像展示 1.1、用VS Code远程连接服务器时,当我们想用matplotlib库来进行图像展示的时候,需要设置DISPLAY变量。 # 用终端工具(XShell)SSH远程服务器,在终端上输入下列语句 # 如果使用了anaconda的虚拟环境&…...

Linux性能优化--性能追踪3:系统级迟缓(prelink)
12.0 概述 本章包含的例子说明了如何用Linux性能工具寻找并修复影响整个系统而不是某个应用程序的性能问题。阅读本章后,你将能够: 追踪是哪一个进程导致了系统速度的降低。用strace调查一个不受CPU限制的进程的性能表现。用strace调查一个应用程序是如…...

SpringBoot2.x简单集成Flowable
环境和版本 window10 java1.8 mysql8 flowable6 springboot 2.7.6 配置 使用IDEA创建一个SpringBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.…...

微信小程序一键获取位置
需求 有个表单需要一键获取对应位置 并显示出来效果如下: 点击一键获取获取对应位置 显示在 picker 默认选中 前端 代码如下: <view class"box_7 {{ showChange1? change-style: }}"><view class"box_11"><view class"…...

Linux性能优化--使用性能工具发现问题
9.0 概述 本章主要介绍综合运用之前提出的性能工具来缩小性能问题产生原因的范围。阅读本章后,你将能够: 启动行为异常的系统,使用Linux性能工具追踪行为异常的内核函数或应用程序。启动行为异常的应用程序,使用Linux性能工具追…...

【Proteus仿真】【STM32单片机】路灯控制系统
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、人体红外传感器、光线检测模块、路灯继电器控制等。 主要功能: 系统运行后,LCD1602显示时间、工作模…...

Flutter笔记:发布一个Flutter头像模块 easy_avatar
Flutter笔记 发布一个头像Flutter模块 easy_avatar 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1339…...

标准化助推开源发展丨九州未来参编开源领域4项团体标准正式发布
在数字中国及数字经济时代的大背景下,开源逐步成为各行业数字化发展的关键模式。在开源产业迅速发展的同时,如何评估、规范开源治理成为行业极度关注的问题。 近日,中电标2023年第27号团体标准公告正式发布,九州未来作为起草单位…...

ChatGPT对于留学生论文写作有哪些帮助?
2022年11月,OpenAI公司的智能聊天产品ChatGPT横空出世,并两个月之内吸引了超过1亿用户,打破了TikTok(抖音国际版)9个月用户破亿的纪录。 划时代的浪潮 ChatGPT的火爆立即引起了全球关注并成为热门话题,它…...

【yolov8目标检测】使用yolov8训练自己的数据集
目录 准备数据集 python安装yolov8 配置yaml 从0开始训练 从预训练模型开始训练 准备数据集 首先得准备好数据集,你的数据集至少包含images和labels,严格来说你的images应该包含训练集train、验证集val和测试集test,不过为了简单说…...

【vue+nestjs】gitee第三方授权登录【超详细】
项目场景: 前端使用vue3ts 后端使用nestjs 1.配置gitee第三方设置 1.找到账号设置 2.找到数据管理下的第三方应用 3.点击创建,进入配置 2.代码演示 特别注意: 如果你跟我一样是前后端分离的模式开发的,应用回调地址填写的应该是你的前…...
node 第八天 使用前后端不分离的方式实现cookie登录验证
实现cookie登录, 第一次登录成功后, cookie由服务端设置并保存在客户端, 后续访问在cookie过期前 (过期时间由后端设置) 将不需要登录cookie出现的背景是 HTTP是无连接的,无状态的, 半双工(http2.0以下), 所以需要一个媒介存在http中, 服务端可以操作, 客户端也可以…...

Ubuntu系统如何进行网络连接-连接电脑局域网-物联网开发-Ubuntu系统维护
一、前言 在Ubuntu系统的维护中,我们常常需要对VMware中的Ubuntu虚拟机配置网络连接,以连接服务器下载或安装软件包以及进行网络通信等。 基于上述问题,本文将着重分享Ubuntu配置网络链接的若干方法。 二、网络连接模式 打开VM,右…...

STL库——Vector常见使用接口
一、介绍 1. vector是表示可变大小数组的序列容器,就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的࿰…...
将文件(File 对象)分割成多个块
如果要将文件(File 对象)分割成多个块,可以使用 JavaScript 中的 Blob 和 File 构造函数以及数组的 slice 方法。以下是一个示例: // 创建一个 File 对象,例如从文件输入框获取的文件 const file document.getElemen…...

若要对多态类进行深拷贝,应使用虚函数的clone,而不是公开的拷贝构造赋值
拷贝一个多态类可能会导致切片问题,为了解决这个问题,应覆盖一个虚clone函数,让他根据实际类型进行复制并返回一个到新对象的所有权的指针(std::unique_ptr),在派生类,通过使用所谓的协变返回类型来返回派生…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...