点赞
评论
收藏
分享
举报
奇怪的proxy_redirect指令问题
发表于2021-05-26 14:48

浏览 1.4k

背景:

浏览器访问方向代理Nginx,到后端应用上,后端应用会捕获来源$http_host,重定向到$http_host/mdms路径,浏览器访问应用成功。

疑问:

此时Nginx的配置中,配置了一个指令proxy_set_header Host edgp,edgp为proxy_pass的upstream_name,此配置浏览器可以正常访问;

但是当我配置 proxy_set_header Host edgp1时,浏览器访问跳转后的访问路径为http://edgp1/mdms,访问必然失败。


根据上述情况,咨询过一些同事,同事认为是proxy_redirect的默认值起了作用,但是我始终不能理解!

同事认为,当设置Host为edgp也就是upstream_name的话,应用服务器返回的路径为http://edgp/mdms/,由于edgp和 upstream_name 相同,所以 proxy_redirect起了作用,置换为http://1.1.1.1:10053/mdms。


有熟悉这个机制的老师,可以帮忙科普一下吗?

已修改于2023-03-06 02:24
本作品系原创
创作不易,留下一份鼓励
像雾像雨又像风

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
像雾像雨又像风
这家伙很懒还未留下介绍~
3
文章
5
问答
0
粉丝
相关文章
谈到Redis缓存,我们描述其性能时会这么说:支持1万并发连接,几万QPS。而我们描述Nginx的高性能时,则会宣示:支持C10M(1千万并发连接),百万级QPS。Redis与Nginx同样使用了事件驱动、异步调用、Epoll这些机制,为什么Nginx的并发连接会高出那么多呢?(本文不讨论Redis分布式集群)这其实是由进程架构决定的。为了让进程占用CPU的全部计算力,Nginx充分利用了分时操作系统的特点,比如增加CPU时间片、提高CPU二级缓存命中率、用异步IO和线程池的方式回避磁盘的阻塞读操作等等,只有清楚了Nginx的这些招数,你才能将Nginx的性能最大化发挥出来。为了维持Worker进程间的负载均衡,在1.9.1版本前Nginx使用互斥锁,基于八分之七这个阈值维持了简单、高效的基本均衡。而在此之后,使用操作系统提供的多ACCEPT队列,Nginx可以获得更高的吞吐量。本文将会沿着高性能这条主线介绍Nginx的Master/Worker进程架构,包括进程间是如何分担流量的,以及默认关闭的多线程模式又是如何工作的。同时,本文也是Nginx开源社区基础培训系列课程第一季,即6月1
点赞 10
浏览 2.9k
配置示例:worker_processes  1; events {     worker_connections  1024; } http {     include       mime.types;     default_type  application/octet-stream;     sendfile        on;     keepalive_timeout  65;     server {     &nbs
点赞 0
浏览 954
服务端缓存proxycache属于服务端缓存,主要实现nginx服务器对客户端数据请求的快速响应。nginx服务器在接收到被代理服务器的响应数据之后,一方面将数据传递给客户端,另一方面根据proxycache的配置将这些数据缓存到本地硬盘上。当客户端再次访问相同的数据时,nginx服务器直接从硬盘检索到相应的数据返回给用户,从而减少与被代理服务器交互的时间。 开启nginx缓存 反向代理nginx配置首先需要指定proxy_cache_path,可以指定多条: proxy_cache_path/tmp/nginx/cachelevels=1:2inactive=60skeys_zone=mycache:10mmax_size=10g; /tmp/nginx/cache:缓存文件存放的路径。levels:默认所有缓存文件都放在同一个目录下时,会影响缓存的性能,大部分场景推荐使用2级目录来存储缓存文件,1和2表示用1位和2位16进制来命名目录名称。第一级目录用1位16进制命名,如b;第二级目录用2位16进制命名,如2b。所以一级目录有16个,二
点赞 3
浏览 2.1k