首页 > 系统相关 >使用tcpdump+wirkshark分析nginx反向代理无法访问问题

使用tcpdump+wirkshark分析nginx反向代理无法访问问题

时间:2023-06-17 15:37:44浏览次数:42  
标签:wirkshark http 无法访问 9090 nginx prometheus proxy 10.10

问题描述

在使用nginx配置多路径反向代理后端prometheus应用的时候由于prometheus本身是自动跳转到/graph才能正常访问,而使用nginx反向代理如果只是配置简单的http_proxy到后端prometheus的端口会报404错误,以下是具体的配置和报错:

        location /prometheus {
         proxy_pass http://10.10.10.227:9090;
         }

image.png

使用tcpdump抓包

tcpdump -i ens192 tcp port 80 or tcp port 9090 -w nginx.pcap

使用wireshark分析

image.png 通过以上截图可知189这台客户端也就是浏览器请求到103,103再请求到227,而从227返回的404可知实际上真实请求的地址是http://10.10.10.227:9090/prometheus,而这个路径在227是不存在的,真实存在的是http://10.10.10.227/graph image.png 因为nginx是多路径的location /prometheus后他请求的路径自带了/prometheus,导致访问不到,如果使用location /,那么他请求的真实地址就是http://10.10.10.227:9090,这个时候227就会自动跳转http://10.10.10.227:9090/graph,所以此处的nginx就要做修改。

修改nginx配置

改成以下:

        location /prometheus {
         rewrite   ^/prometheus/?(.*)$ /$1 break;
         proxy_pass http://10.10.10.227:9090;
         }

以上代码rewrite部分表示将/promethues开始的路径将/promethues去掉只保留后面的内容,但是如果只是一直rewrite处理那么访问会变成这样: image.png 还是没有达成我们的预期,所以还得修改,使用proxy_redirect,修改成如下:

        location /prometheus {
         rewrite   ^/prometheus/?(.*)$ /$1 break;
         proxy_pass http://10.10.10.227:9090;
         proxy_redirect $uri /prometheus$uri;
         }

proxy_redirect字段的意思是将访问路径前面加一个/promethues,这样路径组合/promethus/graph就具体访问到后端的prometheus了,而前面的/promethues代表的是nginx代理部分的内容后面的/graph才是真实的Prometheus的地址 image.png

多个nginx的场景

现实情况有可能nginx前面还会有一个nginx作为入口nginx,或者nginx前面有个F5等负载设备,此时以上的配置又出现问题了。由于是客户的环境,vpn过期了没法截图,这边我就直接把解决方法写出来,还是要修改nginx配置,修改成如下

      location /prometheus {
        rewrite   ^/prometheus/?(.*)$ /$1 break;
        proxy_pass http://10.10.10.227:9090;
        proxy_redirect / https://xxx.xxx.com/prometheus/;
    }

最后一个proxy_redirect简单粗暴的将不管什么链接反正重定向到最终要访问的地址上去。

标签:wirkshark,http,无法访问,9090,nginx,prometheus,proxy,10.10
From: https://blog.51cto.com/riverxyz/6504957

相关文章

  • 使用Docker将Vite Vue项目部署到Nginx二级目录
    Vue项目配置使用Vite创建一个Vue项目,点我查看如何创建配置打包路径在Nginx中如果是二级目录,例如/web时,需要设置线上的打包路径在项目跟路径下创建两个文件:.env.production、.env.development,写入一下内容:##生产环境NODE_ENV='production'VITE_BASE_PATH=/form-design......
  • C# 报错:xxx正由另一进程使用,因此该进程无法访问此文件
    https://www.cnblogs.com/whr2071/p/16070974.html出现原因使用FileStream打开一个文件后又想要操作这个文件;业务场景我打开这个文件后,获取其md5,之后再把这个文件移动到指定位置。后续移动时就会报这个错。分析System.IO.FileStreamfst=newSystem.IO.FileStream(filePat......
  • Nginx、fastCGI、http方式关系梳理
     1.介绍在linux的LNMP环境中,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本。那么,这样配置的背后原理是什么?nginx、fastCGI、php-fpm之间又有什么关系呢?一直有这样的疑惑,由于无法理清nginx、php-fpm之间的关系,遇到nginx解......
  • **使用源码部署Nginx 1.23.3的详细步骤和性能优化**
    简介:在本篇博客文章中,我们将详细介绍如何使用源码部署Nginx1.23.3,并提供一些优化措施以提升性能和安全性。将按照以下步骤进行操作:目录准备工作下载和编译Nginx源码安装Nginx配置Nginx优化Nginx性能和安全性启动Nginx服务结论1.准备工作在开始部署Nginx之前,确保你的......
  • K8S nginx-ingress配置集锦
    1.设置IP白名单#设置只能通过192.168.0.0/24和127.0.0.1网段才能访问,否则报403apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:rabbitmqnamespace:defaultannotations:nginx.ingress.kubernetes.io/whitelist-source-range:192.168.0.0/24,127.0.......
  • vue3:vue+nginx+php进行服务端部署的配置(nginx/1.18.0 / [email protected])
    一,开发环境中的配置:1,前端:vue的vue.config.jsconst{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({transpileDependencies:true,publicPath:process.env.NODE_ENV==="production"?"./":"/&qu......
  • nginx升级和去除http响应中的Server头信息
    这两天接到个需求,就是去除http响应中的Server头信息,说是容易被黑客利用进行有针对的攻击,这个理由很充分,还是要安排上。 我们的http是nginx做的反向代理,于是需求就变成了  Nginx去除HTTPServer头查找了一番,大部分都是隐藏nginx版本server_tokensoff;配置类似于:user......
  • Nginx配置
    下载安装:http://nginx.org/en/download.html下载稳定版启动cmd即可startnginxtasklist/fi"imagenameeqnginx.exe"修改端口号localhost:80或者127.0.0.1打开重启:.\nginx-sreload停止:.\nginx-squit.\nginx-sstopnginx-t判断问题在第几行nginx.con......
  • 为什么HTTP代理无法访问目标网站
    很多人发现,使用了HTTP代理后,无法访问目标网站,这是为什么呢?我们一起来分析下。1、使用方法不对:代理IP授权可能不对,有可能协议不对,还有可以配置不对,如果代理IP连接不上,自然不能访问目标网站。2、代理IP被限制:大多数网站都有防护规则,比如短时间内访问太多次,很有可能受到限......
  • Centos7 安装nginx
    1.添加Nginx到YUM源添加CentOS7Nginxyum资源库,打开终端,使用以下命令:sudorpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm2.安装Nginx在你的CentOS7服务器中使用yum命令从Nginx源服务器中获取来安装Nginx:su......