回答
收藏
分享
举报
Nginx 反向代理如何不返回后端内部IP?
提问于2020-12-21 16:17

浏览 4k

测试命令:

telnet xx.xx.xx.xx 8747

GET / HTTP/1.0

响应:

HTTP/1.1 302 Moved Temporarily
Date: Mon, 21 Dec 2020 07:06:19 GMT
Content-Type: text/html
Content-Length: 126
Connection: close
Location: https://192.168.234.111:8747/ 
Server: Server

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
</body>
</html>

其中响应中Location返回了内部IP,违反安全规则,如何隐藏或是屏蔽呢??

已修改于2023-03-16 08:44



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

你是想把上游返回 的Location值修改掉吗?可以使用proxy_redirect指令,用法在这http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect。

另外,通常上游是应当知道对外的域名的,否则很多跨域的安全问题就无法解决,此时上游的Location是能够拼出正确的域名的。

赞同

1

回复举报

回答于2020-12-21 16:40



回复陶辉
回复
浅行回复了

是的,您是说上游到nginx注册反向代理时,将提供给外部访问的域名(EIP) 带给nginx,设置到proxy_redicect信息中?

0

回复举报

回答于2020-12-21 09:05



回复浅行
回复
陶辉回复了浅行

2个方案,其中方案1我更推荐:

1、上游返回Location中自带域名,这有利于网络安全。

2、其次,才是Nginx将上游返回的IP地址,用proxy_redicect改为域名。

0

回复举报

回答于2020-12-21 09:26



回复陶辉
回复
浅行回复了

有没有办法禁用这种重定向功能。对外暴露的HTTPS接口禁用通过HTTP访问??

0

回复举报

回答于2021-03-18 07:12



回复浅行
回复
提问者
浅行
这家伙很懒还未留下介绍~
0
文章
2
问答
0
粉丝
相关问答

按照官方的 rtmp 规范文档第 30 页的内容,"rtmp://example.com/vod/1/test.mp4" 这种 url 是错的,因为规范文档里写明了 tcUrl 的格式是 "protocol://servername:port/appName/appInstance",即 url 中除了协议名,主机名和端口外,只能有两层。而你的 url 是3层,所以无法访问。

解决办法有 3 种:

1. 可以将 application vod 修改为 application x (x 是数字),但是这中配置不太灵活,因为服务器无法事先知道你有多少个摄像头。

2. 摄像头生成的媒体文件带上编号,例如:1 号摄像头生成的媒体文件是 1_test.mp4,2 号摄像头生成的媒体文件是 2_test.mp4,以此类推。

3. 你这使用的是 nginx-rtmp-module 及其各种变种吧,源代码都开放了,如果有能力,可以自己修改源代码以达到要求。

点赞 0
浏览 3.8k

效果完全一样,解析配置文件时,这两种配置会被转换为同样的值,参考下图中的代码:


点赞 0
浏览 3.8k

支持,需要在stream子系统里开启ssl_preread on

点赞 0
浏览 3.7k