nginx使用反向代理访问时改写请求
时间:2022-07-22
本文章向大家介绍nginx使用反向代理访问时改写请求,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题
假如后端有一个系统访问方式是通过IP加端口的形式访问的,如:10.1.1.12:3000/hello,现在我们想把该资源放到公网上,通过域名的形式访问,在访问之前,需要使用nginx做一层反向代理,而做映射时只需把nginx代理服务器的80端口映射出去即可。
实现
upstream hello {
server 10.1.1.12:3000 weight=2 max_fails=3 fail_timeout=100s;
}
server {
listen 80;
server_name hello.test.com;
access_log /var/log/nginx/hello.log main;
location /hello {
proxy_pass http://hello;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
}
这样是没有问题的,可以代理到后端真实的服务器,但是访问方式为:
<code>hello.test.com/hello</code>
需要在访问时添加请求的地址,比较麻烦,那么如何让Nginx自动添加地址呢?
这里使用rewrite来进行重写请求,示例如下:
upstream hello {
server 10.1.1.12:3000 weight=2 max_fails=3 fail_timeout=100s;
}
server {
listen 80;
server_name hello.test.com;
access_log /var/log/nginx/hello.log main;
location =/ {
rewrite / /hello;
}
location / {
proxy_pass http://hello;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
}
这样就可以啦
- 想进大厂?50个多线程面试题,你会多少?(一)
- golang 几种字符串的连接方式
- Go Template学习笔记
- Go语言实现控制台贪吃蛇
- 容灾半自动化的实现思路(二) (r7笔记第93天)
- Go 谚语
- DBA和开发同事的一些代沟(五) (r7笔记第92天)
- 55. 上传文件(Web版) | 厚土Go学习笔记
- ASM无法启动的问题分析(一)(r7笔记第87天)
- 54. 心跳的实现 | 厚土Go学习笔记
- 53. Socket服务三次握手的示例 | 厚土Go学习笔记
- 使用Beego+Swagger构建更好的API服务
- ASM无法启动的问题分析(二)(r7笔记第88天)
- 43. 等价二叉树 | 厚土Go学习笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- keras 两种训练模型方式详解fit和fit_generator(节省内存)
- Keras 中Leaky ReLU等高级激活函数的用法
- Python错误的处理方法
- python3的pip路径在哪
- MySQL 案例:init_connect 引发的 Lost connection
- PHP一个简单的无需刷新爬虫
- PHP实现函数内修改外部变量值的方法示例
- PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
- PHP命名空间简单用法示例
- PHP array_shift()用法实例分析
- PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
- 基于Python+QT的gui程序开发实现
- 使用tensorflow根据输入更改tensor shape
- 使用keras实现非线性回归(两种加激活函数的方式)
- Django Form设置文本框为readonly操作