Nginx反向代理如何到访问者机器上(后端调试)

 更新时间:2024年06月18日 10:43:30   作者:No Big Deal  
这篇文章主要介绍了Nginx反向代理如何到访问者机器上(后端调试),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Nginx反向代理到访问者机器上

起因

因一名后端开发,不想使用postman等工具进行接口调试,因为web系统需要经过N多步骤的前置动作,不能保证参数的有效性,因此,需要直接点击web系统,触发本地后端代码。

但是,总不可能动不动就让前端给自己起一个项目吧,于是就用nginx进行部署前端项目,代理转发的形式,将接口转发到后端机器上。

因此有了关于这个配置的折腾。

配置

以下配置是用shell脚本生成的,需要参考脚本生成配置的,可以自己去翻下

配置内容,就以注释形式进行说明

# financeapi server配置 由脚本生成
server {
    listen 1001;
    
    ### 因为涉及到第三方的文件服务器,当特定的接口匹配时,转发到第三方文件服务器上
    ### 307的作用是:在转发过程中不改变原是请求的任何内容(请求方式、请求头、请求体等)
    location  /fronteapi/fs/uploadFile/ {
        return 307 http://10.10.10.10/fronteapi/fs/uploadFile/;
    }
	### 后端接口主要在这个路由里进行匹配
	
    location  /frontapi/ {
    	### 因为proxy_pass是自己拼接的,不是写死的字符串,因此在进行代理转发时,
    	### 会丢失请求参数,需要提前保存,最后拼在proxy_pass上
        if ($request_uri ~* "financeapi(/.*$)") {
            set  $path_remainder  $1;
        }
        ### 代理转发的主要配置,$remote_addr为nginx内置的变量,可表示访问者的IP,本文主题就是这个变量体现的
        
        proxy_pass http://$remote_addr:8079/$path_remainder;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cookie_path / "/; HTTPOnly; SameSite=Lax; Max-Age=86400";
    }
	
	### 静态前端项目的根目录路径配置,相当于入口
    location / {
        root /home/docker/frontApp/front-web/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cookie_path / "/; HTTPOnly; SameSite=Lax; Max-Age=86400";
    }
	
	### 因为认证用的是3方认证服务,因此当如下路径触发时候,需要重写当前路径
    location = /auth/oauth2/authorize {
        rewrite ^  http://xxx/auth/oauth2/authorize;
    }
   
}
# financeapi server配置 生成成功

Nginx反向代理实现指定接口访问指定机器

location表达式类型

  • location = 表示精确匹配
  • location ^~ 表示uri以指定字符或字符串开头
  • location ~ 表示区分大小写的正则匹配
  • location ~* 表示不区分大小写的正则匹配
  • location / 通用匹配,任何请求都会匹配到

匹配的优先级顺序

( localtion = ) > ( localtion 完整url ) > ( localtion ^~ ) > ( localtion ,* ) > ( lcoaltion部分起始路径 ) > ( / )

需求

nginx反向代理某服务有两个负载,要求 某个 或者 某系列 请求 打向指定负载

  • 定义upstream
    #7080 7091 2负载服务
	upstream gateway-all {
        server 127.0.0.1:7080;
        server 127.0.0.1:7081;
    }
	#7080服务
    upstream gateway-7080 {
        server 127.0.0.1:7080;
    }
	#7081服务
    upstream gateway-7081 {
        server 127.0.0.1:7081;
    }

要求 /api/v1/login 请求 7080机器,/api/v1/logout 请求 7081机器,其他请求走负载,/test-gateway 是反向代理服务的上下文

  • 实现一:定义不同的localtion,路由不同的uri
    location /test-gateway/api/v1/login  {
    	#指向上面的upstream
        proxy_pass http://gateway-7080;
    }
    
    location /test-gateway/api/v1/logout  {
    	#指向上面的upstream
        proxy_pass http://gateway-7081;
    }    
    
    location /test-gateway  {
    	#指向上面的upstream
        proxy_pass http://gateway-all;
    }
  • 实现二:一个localtion,路由不同的uri
    location /test-gateway {
		if ($request_uri ~* "/api/v1/login"){
			proxy_pass http://gateway-7080;
		}
		if ($request_uri ~* "/api/v1/logout"){
			proxy_pass http://gateway-7081;
		}
        proxy_pass http://gateway-all;
    }

location 灵活多变,具体哪种适合自己,根据自己的业务场景来做选择

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx could not build the server_names_hash 错误的解决办法

    Nginx could not build the server_names_hash 错误的解决办法

    这篇文章主要介绍了Nginx could not build the server_names_hash 错误的解决办法,需要的朋友可以参考下
    2014-03-03
  • nginx部署前端项目location时root和alias配置指南

    nginx部署前端项目location时root和alias配置指南

    nginx指定文件路径有两种方式root和alias,下面这篇文章主要给大家介绍了关于nginx部署前端项目location时root和alias配置的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • nginx日志格式分析以及修改详解

    nginx日志格式分析以及修改详解

    Nginx日志对于统计、系统服务排错很有用,下面这篇文章主要给大家介绍了关于nginx日志格式分析以及修改的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Nginx域名转发使用场景代码实例

    Nginx域名转发使用场景代码实例

    这篇文章主要介绍了Nginx域名转发使用场景代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Nginx geoip模块实现地区性负载均衡

    Nginx geoip模块实现地区性负载均衡

    相信做过awstats的都用过开源的geoip.dat ip数据库,刚好nginx wiki上有geoip 模块,这样就可以实现地区性的负载均衡,但是maxmind 的ip数据库对中国的支持不算太好,不过现在也不错了~
    2010-12-12
  • Nginx搭建图片视频服务器的部署步骤

    Nginx搭建图片视频服务器的部署步骤

    这篇文章主要介绍了Nginx搭建图片视频服务器的部署步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Nginx路由匹配规则及优先级详解

    Nginx路由匹配规则及优先级详解

    Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Nginx的路由匹配规则及其优先级,需要的朋友可以参考下
    2025-05-05
  • 详解nginx rewrite和根据url参数location

    详解nginx rewrite和根据url参数location

    本篇文章主要是介绍了nginx rewrite和根据url参数location,有兴趣的同学可以了解以下。
    2016-11-11
  • nginx cache不缓存问题的原因与解决方案

    nginx cache不缓存问题的原因与解决方案

    最近在工作中遇到了一个问题,发现nginx cache居然不缓存,后来通过查找网上的资料找到了原因和解决方案,下面整理好分享给大家,同样遇到这个问题的朋友们可以参考借鉴,下面和小编一起来学习学习吧。
    2016-10-10
  • Centos离线安装Nginx全过程

    Centos离线安装Nginx全过程

    文章讲述了如何在CentOS系统上离线安装Nginx环境,包括准备必要的依赖库(如C++环境、openssl、pcre、zlib),编译Nginx源码,以及启动Nginx并验证安装是否成功
    2025-11-11

最新评论