Nginx Location和Rewrite总结
Nginx 版本:nginx/1.10.3 (Ubuntu)
Location 部分:
第一步:创建Nginx 虚拟主机
Nginx 安装成功安装并且可以运行之后,在 /etc/nginx 目录下创建vhosts 目录,并且打开nginx.conf 文件,在http模块中,将vhosts
文件下所有以.conf文件包含进来,这样就可以在vhosts下创建不同域名的server,结构比较清晰。
include /etc/nginx/vhosts/*.conf;
server {
listen 80;
server_name test.com;
index aa.php;
root /var/www/test;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
##这里有两个location,location / 的优先级 比 location ~ \.php$ 的优先级要低
##设置的index 为aa.php
第二步:在 /etc/hosts 文件中添加 127.0.1.1 test.com
第三步:创建 /var/www/test 目录,并添加 aa.php,cc.php和index.php
第四步:实验
curl test.com/index.php
输出:index.php 说明运行的是 index.php 这个文件
解释:这里是直接匹配到了 .php 结尾的location
curl test.com
输出:aa.php 说明运行的是aa.php这个文件
解释:这里由于没有匹配到 .php结尾的location,所以匹配到了默认的 / location。 默认的location中指定了
默认文件为 aa.php。然后又使用到了try_files 这个命令。所以会重写到 test.com/aa.php。然后就会被 .php 结尾
location 匹配到。然后输出aa
其它匹配及总结:
location = / {
# 精确匹配"/"
}
location / {
# 所有location匹配之后都无法匹配的默认匹配
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
}
location ~* .(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 将会由 ^~ /images/ 的location来匹配
}
Rewrite 部分:
rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。与location主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对一类路径做控制访问或反向代理.
rewrite regex replacement [flag];
regex
.: 匹配除换行符以外的任意字符?: 重复0次或1次+: 重复1次或更多次*: 重复0次或更多次\d:匹配数字^: 匹配字符串的开始$: 匹配字符串的介绍{n}: 重复n次{n,}: 重复n次或更多次[c]: 匹配单个字符c[a-z]: 匹配a-z小写字母的任意一个
flag可以是如下参数
last 本条规则匹配完成之后,继续向下匹配新的location URI。
break 本条规则匹配完成之后,不再匹配后面的任何规则。
redirect 返回302临时重定向
permanent 返回301永久重定向
实例:
rewrite ^/(.*) http://www.test.com/$1 permanent;
当访问 test.com及之后的内容,会通过这条rewrite跳转到www.test.com这个域名
server_name 也可以实现相同目的 ,配置如下:
server_name test.com www.test.com
Nginx Location和Rewrite总结的更多相关文章
- nginx location 与 rewrite详解 (转)
点我
- nginx的location和rewrite
1 Nginx rewrite基本语法 Nginx的rewrite语法其实很简单.用到的指令无非是这几个 set if return break rewrite 麻雀虽小,可御可萝五脏俱全.只是简单的 ...
- 快速掌握Nginx(二) —— Nginx的Location和Rewrite
1 location详解 1.location匹配规则 Nginx中location的作用是根据Url来决定怎么处理用户请求(转发请求给其他服务器处理或者查找本地文件进行处理).location支持正 ...
- nginx中location、rewrite用法总结
一.location用法总结 location可以把不同方式的请求,定位到不同的处理方式上. 1.location的用法 location ~* /js/.*/\.js 以 = 开头,表示精确匹配:如 ...
- Nginx配置location及rewrite规则
Nginx配置location及rewrite规则 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } loca ...
- nginx location rewrite 禁止访问某个目录
Location 指令,是用来为匹配的 URI 进行配置 http://www.baidu.com/test/index.php?a=1&b=ture 这里面/test/index.php ...
- 【原创】运维基础之Nginx(3)location和rewrite
nginx location =:精确匹配(必须全部相等) ~:大小写敏感,正则匹配 ~*:忽略大小写,正则匹配 ^~:只需匹配uri部分,精确匹配 @:内部服务跳转,精确匹配 优先级: Exact ...
- Nginx中的Location和Rewrite
Nginx中的Location和Rewrite 目录 Nginx中的Location和Rewrite 一.location 1. location的分类 2. location常用的匹配规则 3. l ...
- thinkphp nginx php-fpm url rewrite 导致 404 错误
## thinkphp nginx php-fpm url rewrite 导致 404 错误 之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在 ...
随机推荐
- PJzhang:centos7上LNMP方式安装dvwa漏洞测试环境
猫宁!!! 参考链接:https://www.jianshu.com/p/5491ce5bfbac https://www.cnblogs.com/wujuntian/p/8183952.html h ...
- python 列表 元组
1.列表的基本声明和赋值 #声明一个空列表 变量 = [] 或者 变量 = list() var = [1] var2 = list() # 声明带有数据的列表 var = [1,2,3,'一','二 ...
- “XXX.Index”不扩展类“System.Web.UI.Page”,因此此处不允许的问题
“XXX.Index”不扩展类“System.Web.UI.Page”,因此此处不允许的问题 原因:设计页面继承的路径和后台.cs页面类的路径不一致造成的 看下图 这个是设计页面的样式 这个是后台cs ...
- JSP | 基础 | 新建Hello world 的三种方式
第一种: 直接写一个 test.jsp 文件到ROOT文件目录下,内容如下,访问 “http://localhost:8080/test.jsp” <%-- Licensed to the Ap ...
- 贪心 Codeforces Round #304 (Div. 2) B. Soldier and Badges
题目传送门 /* 题意:问最少增加多少值使变成递增序列 贪心:排序后,每一个值改为前一个值+1,有可能a[i-1] = a[i] + 1,所以要 >= */ #include <cstdi ...
- 福建工程学院第七届ACM程序设计新生赛 (同步赛)
A.关电脑 #include<bits/stdc++.h> using namespace std; typedef long long LL; int T,h1,m1,s1,h2,m2, ...
- python_13(前端—cs)
第1章 前端三大标准:1.1 三大标准介绍 1.2 html标签一览表 第2章 结构标准 html 2.1 html结构 2.2 html常用标签 2.2.1 h1-h6 2.2.2 span 2.2 ...
- 搭建Sql Server AlwaysOn 视频教程
本人搭建关于Sql Server 2012 AlwaysOn 的视频系列教程. 教程一: 观看及下载地址:https://pan.baidu.com/s/1QAvhgFTSyvpR5xQZbKHO3w ...
- postgresql版sde(10.4.1)新建数据库
使用sde pg版,第一次建sde库就是新安装sde的方法 然而从第二次开始可以有其他方式 新建一般的pg数据再转为sde数据库: 首先用建一般的pg数据库 首先要新建数据库 数据库名:新建的数据库名 ...
- Android利用Socket与硬件通信之智能家居APP
前几天做一个智能家居APP,硬件段使用的是ESP8266WIFI模块,其实不管是WIFI模块还是蓝牙,通信都是同样一个道理,获取IP和端口来进行通信. 我是通过XCOM v2.0 发送信息,移动端接收 ...