Nginx反向代理怎么到访问者机器上
AI 概述
Nginx 反向代理到访问者机器上起因配置Nginx 反向代理实现指定接口访问指定机器location 表达式类型匹配的优先级顺序需求
Nginx 反向代理到访问者机器上
起因
因一名后端开发,不想使用 postman 等工具进行接口调试,因为 web 系统需要经过 N 多步骤的前置动作,不能保证参数的有效性,因此,需要直接...
目录

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反向代理怎么到访问者机器上的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Nginx反向代理怎么到访问者机器上
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Nginx反向代理怎么到访问者机器上

微信
支付宝