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总结的更多相关文章

  1. nginx location 与 rewrite详解 (转)

    点我

  2. nginx的location和rewrite

    1 Nginx rewrite基本语法 Nginx的rewrite语法其实很简单.用到的指令无非是这几个 set if return break rewrite 麻雀虽小,可御可萝五脏俱全.只是简单的 ...

  3. 快速掌握Nginx(二) —— Nginx的Location和Rewrite

    1 location详解 1.location匹配规则 Nginx中location的作用是根据Url来决定怎么处理用户请求(转发请求给其他服务器处理或者查找本地文件进行处理).location支持正 ...

  4. nginx中location、rewrite用法总结

    一.location用法总结 location可以把不同方式的请求,定位到不同的处理方式上. 1.location的用法 location ~* /js/.*/\.js 以 = 开头,表示精确匹配:如 ...

  5. Nginx配置location及rewrite规则

    Nginx配置location及rewrite规则 示例: location  = / {   # 精确匹配 / ,主机名后面不能带任何字符串   [ configuration A ] } loca ...

  6. nginx location rewrite 禁止访问某个目录

    Location 指令,是用来为匹配的 URI 进行配置 http://www.baidu.com/test/index.php?a=1&b=ture   这里面/test/index.php ...

  7. 【原创】运维基础之Nginx(3)location和rewrite

    nginx location =:精确匹配(必须全部相等) ~:大小写敏感,正则匹配 ~*:忽略大小写,正则匹配 ^~:只需匹配uri部分,精确匹配 @:内部服务跳转,精确匹配 优先级: Exact ...

  8. Nginx中的Location和Rewrite

    Nginx中的Location和Rewrite 目录 Nginx中的Location和Rewrite 一.location 1. location的分类 2. location常用的匹配规则 3. l ...

  9. thinkphp nginx php-fpm url rewrite 导致 404 错误

    ## thinkphp nginx php-fpm url rewrite 导致 404 错误 之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在 ...

随机推荐

  1. .NET Core 跨平台物联网开发:连接阿里云IOT(一)

    系列教程目录 (一) 连接阿里云IOT (二) 设置委托事件 (三) 上报属性 (四)  SDK文档 属性.方法.委托.类 http://pan.whuanle.cn/index.php?dir=up ...

  2. hadoop wordcount程序缺陷

    在wordcount 程序的main函数中,没有读取运行环境中的各种参数的值,全靠hadoop系统的默认参数跑起来,这样做是有风险的,最突出的就是OOM错误. 自己在刚刚学习hadoop编程时,就是模 ...

  3. iOS UITableView ExpandableHeader(可形变的Header)

    最常见的header就是在tableView下拉时header里的图片会放大的那种, 最近研究了一下,自己实现了这种header. 1.设置TableView的contentInset(为header ...

  4. spring MVC 文件上传错误

    1.The request sent by the client was syntactically incorrect () http://luanxiyuan.iteye.com/blog/187 ...

  5. 双端队列 HDOJ 3530 Subsequence

    题目传送门 题意:问最长子序列,满足区间最大值 - 最小值在[m, k]之间 分析:用双端队列维护最大值和最小值,保存的是位置.当满足条件时,更新最大值. /********************* ...

  6. sql基础语法-创建表和约束

    创建数据库表 USE SQL2016 IF OBJECT_ID('dbo.Employees','U') IS NOT NULL DROP TABLE dbo.Employees; Create TA ...

  7. Spring Boot 注册 Servlet 的三种方法,真是太有用了!

    本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spr ...

  8. IOS存储目录documents你在哪里啊

    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory ...

  9. centos启用socks5服务

    直接在终端用 root 安装 *** 官方客户端 apt-get install python-pip -ypip install shadowsocks 然后编辑 /etc/shadowsocks. ...

  10. 在Github上删除一个项目

    最近在Github上浏览,不小心fork了一个项目.想删除,现在记录下来. 1.点击选择fork的项目,以gubai为例 2.进入后,点击Settings 3.进入页面后,点击Delete this ...