nginx入门二
反向代理:
proxy_pass
server {
listen 80;
location /n {
proxy_pass http://127.0.0.1:8000/test; }
location /m {
proxy_pass http://127.0.0.1:8000/test/; }
}
http://127.0.0.1:8000 是python 提供的http服务。
访问:http://127.0.0.1/n
结果重定向到:http://127.0.0.1/test/
404 Not Found
访问:http://127.0.0.1/n/
结果正常
Directory listing for /test/
访问:http://127.0.0.1/nhaha , http://127.0.0.1/nhaha/
Error response
Error code 404.
访问:http://127.0.0.1/m
结果正常
Directory listing for /test/
访问:http://127.0.0.1/m/
结果正常
Directory listing for /test//
访问:http://127.0.0.1/mhaha
结果重定向到:http://127.0.0.1/test/haha/
404 Not Found
访问:http://127.0.0.1/mhaha/
结果正常
Directory listing for /test/haha/
只要是重定向的,请求都没有经过proxy_pass,nginx直接返回了。
但是如果在配置文件加入:
location / {
proxy_pass http://127.0.0.1:8000/; }
访问:http://127.0.0.1/n
重定向到:http://127.0.0.1/test/
结果正常
Directory listing for /test/
由此可知nginx的匹配应该是有一个优先级的。
location /m2 {
proxy_pass http://127.0.0.1:8000/test/haha/; }
访问:http://127.0.0.1/m
那么肯定选择/m匹配,结果:
Directory listing for /test/
访问:http://127.0.0.1/m2
那么肯定选择/m2匹配,结果:
Directory listing for /test/haha/
访问:http://127.0.0.1/m3
由于配置文件没有/m3,所以nginx会尝试/m
/m=http://127.0.0.1:8000/test/
/m3=http://127.0.0.1:8000/test/3
所以重定向到:http://127.0.0.1/test/3/
Directory listing for /test/3/
分析总结:
nginx的匹配是:先窄范围后宽范围。这也解释了在添加 location /{...}之前重定向返回404,后来有正常。因为之前 / 指向的是nginx的html目录,配置后 /指向python监听的目录(/root/Downloads/)。
是否重定向由:匹配后的url后面是否有"/"决定。/m3=http://127.0.0.1:8000/test/3(重定向),/m3/=http://127.0.0.1:8000/test/3/(不重定向)
我们也发现这样的匹配会由超出预期的结果,比如/m3,/mhaha
所以在写匹配规则的时候还是:
location /uri/ {
proxy_pass http://127.0.0.1:8000/uri 或 proxy_pass http://127.0.0.1:8000/uri/
}
nginx入门二的更多相关文章
- nginx入门教程
nginx入门教程 一.概述 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向 ...
- nginx入门与实战 安装 启动 配置nginx Nginx状态信息(status)配置 正向代理 反向代理 nginx语法之location详解
nginx入门与实战 网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web ...
- Linux(6)- redis发布订阅/持久化/主从复制/redis-sentinel/redis-cluster、nginx入门
一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...
- 转:nginx入门指南,快速搭建静态文件服务器和代理服务器
本文介绍 Nginx 入门基础知识,让你迅速搭建 Nginx 服务器.主要内容包括 Nginx 安装和简单使用.Nginx的简单原理.Nginx 配置文件的结构.如何使用 Nginx 来提供静态文件服 ...
- Linux--6 redis订阅发布、持久化、集群cluster、nginx入门
一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...
- Nginx入门教程(转)
原文:https://www.cnblogs.com/qdhxhz/p/8910174.html nginx入门教程 一.概述 什么是nginx? Nginx (engine x) 是一款轻 ...
- Nginx入门到实战
location 语法 location 有”定位”的意思, 根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分,定位到不同的处理方式上. 比如, 碰 ...
- day07 Nginx入门
day07 Nginx入门 Nginx简介 Nginx是一个开源且高性能.可靠的http web服务.代理服务 开源:直接获取源代码 高性能:支持海量开发 可靠:服务稳定 特点: 1.高性能.高并发: ...
- 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...
随机推荐
- MT【204】离散型最值
(联赛一试2006,14).将2006表示成5个正整数$x_1,x_2,x_3,x_4,x_5$之和.记$S=\sum\limits_{1\le i<j\le5}{x_ix_j}$问:(1) 当 ...
- adb is down 的解决方法
今天装完android Eclipse 之后 ,运行时报出这么个错误 : The connection to adb is down, and a severe error has occured. ...
- luogu4197 Peaks (kruskal重构树+主席树)
按照边权排序建出kruskal重构树,每次就变成了先找一个权值<=x的最远的祖先,然后看这个子树的第k小.离散化一下,在dfs序上做主席树即可 而且只需要建叶节点的主席树 注意输出的是第k小点的 ...
- 【洛谷P4054】计数问题
题目大意:维护 N*M 个点,每个点有三个权值,支持单点修改,查询矩形区间内权值等于某个值的点的个数. 题解:矩阵可以看成两个维度,权值为第三个维度,为一个三维偏序维护问题.发现第三维仅仅为单点修改和 ...
- JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
本项目测试环境 JDK: 1.8 SpringBoot: 2.1 需求描述 当我们想要利用SpringBoot封装一套组件并发布给第三方使用时,我们就不得不考虑我们的组件能否被使用者正确引入使用,此处 ...
- Pentaho BI server 中 CCC table Component 的使用小技巧
我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable Q: 如何设置表格中各种提示文字的语言(默认为英语)? C ...
- wagger的展示路径修改
转:https://www.jianshu.com/p/ce7e247515f5?utm_source=oschina-app 注:本文是基于springboot配置实现,但在实际中使用springm ...
- linux command ------ find
find | grep luoluo 将当前目录及子目录的文件名中含有luoluo的文件过滤出来 | 是管道,把find查找的内容传递给下个命令(grep) find后面不加其他内容(比如路径)表示打 ...
- php-fpm sock文件权限设置
在编译php-fpm时,若没有指定fpm用户,在配置文件中也没有指定用户,则sock文件会由root(启动php-fpm的用户)创建,其权限是srw-rw----. 而nginx一般由nginx用户启 ...
- CentOS 6.9/7通过yum安装指定版本的MySQL
一.安装CENTOS 6 # wget http://repo.mysql.com/mysql57-community-release-el6.rpm && rpm -ivh mysq ...