nginx 1.6.3配置虚拟主机与rewrite-location匹配规则
1、 Nginx 虚拟主机配置(配置文件末尾以分号[;]结尾)
(1) 准备测试目录站点
[root@WEB conf]# cd /application/nginx/conf/
[root@WEB conf]# mkdir extra (创建虚拟主机存放目录)
[root@WEB conf]# mkdir /application/nginx/html/www (创建虚拟主机网站根目录)
[root@WEB conf]# mkdir -p /var/www/html (创建虚拟主机网站根目录)
[root@WEB conf]# echo "www" > /application/nginx/html/www/index.html (www.etiantian.org 默认网页)
[root@WEB conf]# echo "bbs" > /var/www/html/index.html (bbs.etiantian.org 默认网页)(2)配置nginx.conf主配置文件
[root@WEB conf]# cat nginx.conf
error_log logs/error.log; (指定错误日志)
worker_processes 1; (进程数,一般是cpu核数的1-2倍)
events {worker_connections 1024; (最大并发连接数)
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;include extra/*.conf; (指定虚拟主机存放位置)log_format main '$remote_addr - $remote_user [$time_local] "$request" ' (access日志格式,main:日志的调用值)'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main; (访问日志,通过main调用日志的显示格式,这行必须放到日志的下面)
}(3)配置虚拟主机
[root@WEB conf]# cd extra/
[root@WEB extra]# cat www.conf
server {listen 80;server_name www.etiantian.org etiantian.org; 域名,可以增加多个别名,用空格分开location / {root html/www; 默认网站根目录(在安装目录的html/www/下)index index.html index.htm;}access_log logs/www_access.log main; 虚拟主机日志,放到server标签里面
}
[root@WEB extra]# cat bbs.conf
server {listen 80;server_name bbs.etiantian.org; 域名location / {root /var/www/html; 自定义默认网站根目录index index.html index.htm;}access_log logs/bbs_access.log main; 虚拟主机日志,放到server标签里面
}
[root@WEB extra]# cat status.conf
server {listen 80;server_name status.etiantian.org; 域名location / {stub_status on; 开启监控模块(用于监控nginx状态信息)access_log off; 关闭日志}
}(4) 配置nginx加密访问
[root@WEB extra]# cat www.confserver {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html index.htm;auth_basic "closed site"; 开启加密认证auth_basic_user_file /application/nginx/conf/htpasswd; 认证文件}access_log logs/www_access.log main;}
# 配置认证文件并重启nginx
[root@WEB extra]# yum -y install httpd-tools
[root@WEB extra]# htpasswd -bc /application/nginx/conf/htpasswd oldboy 123456
[root@WEB extra]# cat /application/nginx/conf/htpasswd
oldboy:SDYvt.oRyvO5g
(3) 访问http://www.etiantian.org
2、 Nginx 日志切割
[root@WEB logs]# cd /server/scripts/
[root@WEB scripts]# cat nginx_log.sh
#!/bin/bash
date=`date +%F -d "-1day"`
cd /application/nginx/logs/ && \
mv www_access.log ${date}_www_access.log
mv bbs_access.log ${date}_bbs_access.log
> access.log
[root@WEB scripts]# crontab -e
0 0 * * * /bin/sh /server/scripts/nginx_log.sh > /dev/null 2>&1
3、Nginx location 匹配规则
(1) 精确匹配,访问www.etiantian.org 则匹配404
# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org404
[root@WEB extra]# cat www.conf
server {listen 80;server_name www.etiantian.org;location = / {return 404;}(2)正则匹配,以/images/开头的, images目录必须存在,访问www.etiantian.org/images/则匹配200
# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/images/200
location ^~/images/ {return 200;}(3) 正则匹配以.gif .jpg .jpeg结尾,访问www.etiantian.org/a.jpg则匹配301
# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/a.jpg301
location ~*.(gif|jpg|jpeg)$ {return 301;}(4) 常规匹配,如果有正则会优先匹配正则,访问www.etiantian.org/documents/ 则匹配302
# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/documents/302
# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/documents/a.jpg301(加上a.jpg正则优先,匹配301
location /documents/ {return 302;}(5) 常规匹配(默认匹配)都没有匹配到,则匹配500
# curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org/test/a.txt500
location / {return 500;}(6) 表示访问网站根目录的时候会去/var/www/html/目录下去找如果匹配http://www.etiantian.org 就会去/var/www/html/目录下找location / { root /var/www/html; index index.html; }(7) 表示访问网站根目录下的blr2目录,会去/var/www/html/blr2/目录下去找如果匹配http://www.etiantian.org/blr2 就会去/var/www/html/目录下的 blr2/目录中去找 location /blr2 { #这里的blr2是一个目录#注意:这里的网站更目录实际上是/var/www/html/blr2/root /var/www/html; index index.html; }
4、nginx rewrite规则
(1) 访问 www.etiantian.org 跳转到 www.baidu.com
[root@WEB extra]# cat www.conf
server {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html;}rewrite ^/(.*) http://www.baidu.com/$1 permanent;
}
解释:
当匹配www.etiantian.org下的任意内容时,则访问www.baidu.com 下的任意部分,$1表示(.*)
匹配域名下的任意内容,(.*)表示任意。这里可以有多个小括号,$1表示第一个小括号,$2第二个(2) 访问bbs.etiantian.org/bbs 跳转到 www.baidu.com(前提是bbs.etiantian.org/bbs/index.html必须存在 )
[root@WEB extra]# cat bbs.conf
server {listen 80;server_name bbs.etiantian.org;location / {root html/bbs;index index.html;}rewrite ^(.*)/bbs http://www.baidu.com permanent;}
解释:
当匹配bbs.etiantian.org/bbs 时,则跳转到www.baidu.com(3) 访问www.etiantian.org/bbs 跳转到 bbs.etiantian.org/abc/bbsserver {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html;}rewrite ^/(.*) http://bbs.etiantian.org/abc/$1 permanent;
}
解释:
当匹配 www.etiantian.org下的任意内容时,则访问 bbs.etiantian.org/abc/ 下的任意内容(4)
server {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html;}rewrite ^(/download/.*)/media/(.*)\..*$ http://bbs.etiantian.org/$1/mp3/$2.mp3 last;
}
解释:
当访问:www.etiantian.org/download/test1/media/test2.php 时,
跳转到:bbs.etiantian.org/download/test1/mp3/test2.mp3
$1=(/download/.*)=test1
$2=(.*)=test2
5、nginx location配置不同站点目录
server {listen 80;server_name www.etiantian.org;location ~ .*\.(gif|jpg|png|css|js)$ {root /data/www;index index.jpg;}location ~ .*\.(html|htm|ht)$ {root /data/bbs;index index.html;}location ~ .*\.(jsp|php) {root /data/blog;index index.php;}}
6、Nginx 定义错误页面
注意:如果有虚拟主机的话,需要在虚拟主机添加,虚拟主机优先生效
(1) 以.html的方式跳转server {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html index.htm;}error_page 404 403 /50x.html; \\如果出现 404 403 页面,就跳转到网站根目录下的 50x.html (http://www.etiantian.ort/50x.html)location = /50x.html { \\当匹配 50x.htmlroot html/www; \\就去网站根目录下寻找50x.html}
}(2) 以图片的方式跳转server {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html index.htm;}error_page 404 403 /404.jpg; \\如果出现 404 403 页面,就跳转到网站根目录下的 404.jpg (http://www.etiantian.ort/404.jpg) location = /404.jpg { \\当匹配 404.jpgroot html/www; \\就去网站根目录下寻找404.jpg }
}(3) 以rewrite的方式跳转
server {listen 80;server_name www.etiantian.org;location / {root html/www;index index.html index.htm;}error_page 404 403 /404.jpg; \\如果出现 404 403 页面,就跳转到网站根目录下的 404.jpg (http://www.etiantian.ort/404.jpg),无论404.jpg是否存在 location = /404.jpg { \\当匹配 404.jpg(无论404.jpg是否存在)access_log /data/logs/nginx/server_error.log; \\记录日志rewrite ^(.*)$ http://www.etiantian.org/50X.html redirect; \\进行地址重写,将localtion匹配到的所有内容,重写为新的RUL,redirect 表示302临时重定向}
}flag标记有:* last 相当于Apache里的[L]标记,表示完成rewrite,匹配完,再向下匹配。地址栏会显示跳转后的地址
* break 终止匹配, 不再匹配后面的规则,地址栏会显示跳转后的地址
* redirect 返回302临时重定向,地址栏会显示跳转后的地址
* permanent 返回301永久重定向,地址栏会显示跳转后的地址
相关文章:
nginx 1.6.3配置虚拟主机与rewrite-location匹配规则
1、 Nginx 虚拟主机配置(配置文件末尾以分号[;]结尾) (1) 准备测试目录站点 [rootWEB conf]# cd /application/nginx/conf/ [rootWEB conf]# mkdir extra (创建虚拟主机存放目录࿰…...

1130-host ... is not allowed to connect to this MySql serve
局域网内另外一台电脑使用navicat连接Mysql出现上述问题:不允许连接 解决方案: 1、输入命令:进入mysql mysql -u root -p 2、输入命令:展示所有数据库 show databases; 3、输入命令进入mysql数据库: use mysql; 4、…...

力扣1502判断能否形成等差数列
class Solution:def canMakeArithmeticProgression(self, arr: List[int]) -> bool:# 对数组进行排序arr.sort()# 计算公差diff arr[1] - arr[0]# 从第二个元素开始逐个检查差值是否一致for i in range(1, len(arr) - 1):if arr[i 1] - arr[i] ! diff:return Falsereturn …...
Python版本变更历史及版本选择指南
Python版本变更历史及版本选择指南 Python版本变更历史及版本选择指南1. Python 3.13.1(2023年发布)主要特性适用场景 2. Python 3.12(2022年发布)主要特性 3. Python 3.11(2022年发布)主要特性 4. Python …...
初始值变量类型
状态名同步位置初始值变量类型不支持的UL刷新注意事项State父组件必填Object、classstring、number、boolean、enum类型,以及这些类型的数组。支持Date类型。对象的对象数组属性更新数组对象的属性更新 State装饰的变量必须初始化,否则编译期会报错。Sta…...
苍穹外卖 项目记录 day03
文章目录 菜品管理模块开发公共字段填充自定义注解 AutoFill自定义切面 AutoFillAspect在Mapper接口的方法上加入 AutoFill 注解 新增菜品文件上传实现新增菜品实现菜品分页查询删除菜品实现修改菜品实现 菜品管理模块开发 公共字段填充 在新增员工或者新增菜品分类时需要设置…...
统计字符【2】(PTA)C语言
本题要求编写程序,输入N个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。 输入格式: 输入在第一行中给出正整数N,第二行输入N个字符,最后一个回车表示输入结束,不算在内。 输出格式: 在一行内按照…...
如何在 Spring Cloud Gateway 中创建全局过滤器、局部过滤器和自定义条件过滤器
Spring Cloud Gateway 是一个功能强大的 API 网关,能够处理 HTTP 请求、响应及路由。通过过滤器机制,您可以在请求和响应过程中进行各种处理操作,如记录日志、身份验证、限流等。Spring Cloud Gateway 提供了三种主要类型的过滤器:…...
PINN模型详解
定义与原理 物理信息神经网络(Physics-Informed Neural Networks, PINN)是一种创新性的机器学习模型,巧妙地将物理知识与深度学习相结合。这种独特的设计理念源于Karniadakis教授的研究团队,他们在一系列开创性工作中提出了这一概念。 PINN的核心思想是在神经网络的损失函数…...

查找路由器的管理后台ip【通用找IP】
需求: 刚刚搞了个【小米】路由器,我想进路由的管理后台,提示:安装xx的路由管家,我不想安装 但是无法找到这个管理后台。 而且我是用这个路由作为中继,那么这个路由的ip就会经常更换 尝试通过网上搜索引擎来…...
AI如何改变IT行业
AI如何改变IT行业 在当今数字化的社会中,人工智能(AI)不仅仅是一个技术词汇,而是一个正在重塑我们生活的现实时态。如果把AI比作一场即将到来的暴风雨,那么IT行业就是它的海洋。在这场风暴中,所有的船只都…...
运行vue项目,显示“npm”无法识别为 cmdlet、函数、脚本文件或可操作程序的名称
PS D:\weduproject\wedu1\wedu\wedu-fast-vue> npm run dev,运行时出现像下面这样的报红信息, npm : The term npm is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or …...

Kubernetes开发环境minikube | 开发部署apache tomcat web单节点应用
minikube是一个主要用于开发与测试Kubernetes应用的运行环境 本文主要描述在minikube运行环境中部署J2EE tomcat web应用 minikube start --force minikube status 如上所示,在Linux中启动minikube运行环境 service docker start docker version service docker …...
OpenCV相机标定与3D重建(44)初始化广角(鱼眼)相机的投影映射函数initWideAngleProjMap()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::initWideAngleProjMap 是 OpenCV 库中的一个函数,用于初始化广角(鱼眼)相机的投影映射。这个函数生成两个…...
现代前端框架
截至2025年,现代前端框架领域仍然以React、Vue和Angular等成熟框架为主导,同时一些新兴框架也在不断崛起和发展。以下是目前较为先进和受欢迎的前端框架: 成熟框架 React 由Facebook开发,是目前最流行的前端框架之一。它使用声明…...

Vue进阶(贰幺贰)npm run build多环境编译
文章目录 一、前言二、实施三、总结:需要打包区分不同环境四、拓展阅读 一、前言 项目开发阶段,会涉及打包部署到多个环境应用场景,在不同环境中,需要进行项目层面的区分,做不同的操作,可以利用打包的--mo…...

社交新零售下开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序的创新实践与发展剖析
摘要:在社交电商蓬勃发展并向社交新零售转型的浪潮中,多种创新模式与技术应用不断涌现。本文聚焦于开源 AI 智能名片 21 链动模式 S2B2C 商城小程序,深入探讨其在社交新零售格局下的内涵、优势、应用策略以及对行业发展的深远影响,…...

xml格式化(1):使用python的xml库实现自闭合标签
前言 最近一段时间一直想要写一个urdf格式化插件。 至于为什么嘛,因为使用sw2urdf插件,导出的urdf,同一标签的内容,是跨行的,这就导致,内容比较乱,而且行数比较多。影响阅读。 因此ÿ…...

重温设计模式--13、策略模式
策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来,使得算法可以独立于使用它的客户端而变化,提高了代码的灵活性和可维护性。 其主要包含以下几个…...

【Rust自学】10.7. 生命周期 Pt.3:输入输出生命周期与3规则
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 10.7.1. 深入理解生命周期 1.指定生命周期参数的方式依赖于函数所做的事情 以上一篇文章的…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...