当前位置: 首页 > news >正文

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 (创建虚拟主机存放目录&#xff0…...

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 提供了三种主要类型的过滤器&#xff1a…...

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 商城小程序,深入探讨其在社交新零售格局下的内涵、优势、应用策略以及对行业发展的深远影响&#xff0c…...

xml格式化(1):使用python的xml库实现自闭合标签

前言 最近一段时间一直想要写一个urdf格式化插件。 至于为什么嘛,因为使用sw2urdf插件,导出的urdf,同一标签的内容,是跨行的,这就导致,内容比较乱,而且行数比较多。影响阅读。 因此&#xff…...

重温设计模式--13、策略模式

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

【Rust自学】10.7. 生命周期 Pt.3:输入输出生命周期与3规则

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

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...