nginx 1.6.3配置虚拟主机与rewrite-location匹配规则

news2025/1/8 3:25:57

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.conf
  server {
        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.org
       404
[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.jpg
  301
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.jpg
   301(加上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.txt
   500
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/bbs
 server {
        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.html
            root   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.jpg
            root   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永久重定向,地址栏会显示跳转后的地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署及常用命令

K8s高可用集群之Kubernetes管理平台、补全命令工具、资源监控工具部署及常用命令 1.Kuboard可视化管理平台2.kubectl命令tab补全工具3.MetricsServer资源监控工具4.Kubernetes常用命令 1.Kuboard可视化管理平台 可以选择安装k8s官网的管理平台;我这里是安装的其他开…

【C++】18.继承

文章目录 1.继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 1.3 继承类模板 2.基类和派生类对象赋值转换3.继承中的作用域3.1 隐藏规则:3.2 考察继承作用域相关选择题 4.派生类的默认成员函数4…

51单片机——8*8LED点阵

LED 点阵的行则为发光二极管的阳极,LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。 因此通过单片机P0口可控制点阵列,74HC595可控制点阵行 11 脚 SR…

FastDeploy部署paddlecls分类模型(windows)

目录 写在前面 总体步骤 C SDK编译库 方式1:编译安装 方式2:下载预编译库 准备模型、文件、代码和数据 模型文件类型 samples代码 待预测图像 使用 FastDeploy C SDK 将cpp源码编译为exe 编写cpp代码 cpp代码编译exe 运行可执行程序exe 将…

电脑如何无线控制手机?

想在电脑上无线控制手机,需要用到Total Control控制软件,具体步骤如下: 1、首先我们在电脑上安装上控制软件Total Control并打开。 2、开启手机USB调试和ADB仅充电模式。 3、手机电脑均连接上相同局域网。 4、连接(首次使用需要用手机U…

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…

QT c++ 样式 设置 标签(QLabel)的渐变色美化

上一篇文章中描述了按钮的纯色&#xff0c;本文描述标签的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

【C++面向对象——输入输出流】处理二进制文件(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 一、流类库中常用的类及其成员函数 二、标准输入输出及格式控制 三、文件的应用方法&#xff08;二进制文件、文本文件&#xff09; 编程要求 实验步骤 通关代码 测试结果 任务描述 本关任务&#xff1a; 用二进制方式打开指定的…

基于大数据爬虫+Python+数据可视化大屏的慧游数据爬虫与推荐分析系统(源码+论文+PPT+部署文档教程等)

博主介绍&#xff1a;**CSDN毕设辅导第一人、**全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 **技术范围&#xff1a;**S…

Linux Shell 脚本编程基础知识篇—awk的条件判断(3)

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周五了&#xff0c;又是一周过去了&#x1f606; 本文是有关Linux shell脚本编程的awk命令的条件语句&#xff0c;后续我会不断增加相关内容 ~~ 回顾:【awk字符串函数和内置变量】 更多Linux 相关内容请点击&#x1f449;【Li…

MITRE ATTCK 简介:初学者指南

网络安全已成为当今数字世界的一个关键问题。随着网络威胁日益复杂&#xff0c;组织需要一种结构化的方法来理解和应对这些风险。这就是 MITRE ATT&CK 框架发挥作用的地方。如果您是网络安全新手或刚刚开始探索威胁分析和缓解&#xff0c;本指南将为 MITRE ATT&CK 提供…

生物医学信号处理--绪论

前言 参考书籍&#xff1a;刘海龙&#xff0c;生物医学信号处理&#xff0c;化学工业出版社 生物医学信号分类 1、由生理过程自发或者诱发产生的电生理信号和非电生理信号 • 电生理信号&#xff1a;ECG/心电、EEG/脑电、EMG/肌电、 EGG/胃电、 EOG/眼电 • 非电生理信号&am…

理解 Tomcat 架构与自定义实现

前言 Tomcat 是一个轻量级的 Web 容器&#xff0c;被广泛应用于 Java Web 开发中。通过它&#xff0c;我们可以轻松地部署和运行 Web 应用。在本文中&#xff0c;我们将深入分析 Tomcat 的核心架构&#xff0c;同时结合一段代码&#xff0c;手动实现一个简化的 Tomcat 服务&am…

怎样修改el-table主题样式

起因&#xff1a;el-table有主题样式&#xff0c;部分需要单独设置 环境&#xff1a;ideanodejs插件谷歌浏览器 第一步&#xff1a;找到scss文件&#xff1a; 谷歌浏览器打开表格页面&#xff0c;ctrlshifti打开开发者工具&#xff0c;点击后鼠标移动到表格单元格上单击一下…

模型 九屏幕分析法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。九屏幕法&#xff1a;全方位分析问题的系统工具。 1 九屏幕分析法的应用 1.1 新产品研发的市场分析 一家科技公司计划开发一款新型智能手机&#xff0c;为了全面评估市场潜力和风险&#xff0c;他们…

CSS 学习之 padding 与图形绘制

padding 属性和 background-clip 属性配合&#xff0c;可以在有限的标签下实现一些 CSS 图形绘制效果&#xff0c;我这里举两个小例子&#xff0c;重在展示可行性。 例 1:不使用伪元素&#xff0c;仅一层标签实现大队长的“三道杠”分类图标效果。此效果在移动端比较常见&…

AI在电子制造中的应用:预测质量控制

一、 电子制造中存在的质量问题 电子制造过程中&#xff0c;由于生产工艺复杂、材料种类繁多、生产环境要求高等因素&#xff0c;可能会出现各种质量问题。 常见质量问题如下&#xff1a; 1. 空焊 原因&#xff1a;锡膏活性较弱、钢网开孔不佳、铜铂间距过大或大铜贴小元件、…

(已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型

在雷达相机融合三维目标检测中&#xff0c;雷达点云稀疏、噪声较大&#xff0c;在相机雷达融合过程中提出了很多挑战。为了解决这个问题&#xff0c;我们引入了一种新的基于query的检测方法 Radar-Camera Transformer (RCTrans)。具体来说&#xff1a; 首先设计了一个雷达稠密…

WPS计算机二级•数据查找分析

听说这里是目录哦 通配符&#x1f30c;问号&#xff08;?&#xff09;星号&#xff08;*&#xff09;波形符&#xff08;~&#xff09; 排序&#x1f320;数字按大小排序以当前选定区域排序以扩展选定区域排序 文字按首字母排序 快速筛选分类数据☄️文字筛选数字筛选颜色筛选…

(leetcode算法题)191. 位1的个数 和 338. 比特位计数

对于一个正整数 n&#xff0c;如果对这个正整数执行 n & (n - 1); 的代码&#xff0c;将会得到一个整数m n 和 m的关系&#xff1a;n 的二进制表示 与 m的二进制表示中除了n最右边的1取值不同&#xff0c;其他都相同 比如114514 和 114512 的二进制表示中第2位&#xff0…