问一个 nginx 相关的问题!

起因是这篇文章

https://github.com/EtherDream...

里面有这样一段描述

举个例子,假如我们用 a.com 反向代理 b.com ,并且 b.com 有如下网页:

<img src="/foo.gif">
<img src="http://b.com/bar.gif">

第一个 img 是相对路径。由于当前实际地址是 a.com ,因此最终访问的 URL 是 http://a.com/foo.gif 。我们的后端服务器收到请求后,抓取 http://b.com/foo.gif 的内容并返回给用户。这没有问题。

第二个 img 是绝对路径,这就有问题了!浏览器会直接访问 b.com ,根本不经过我们的后端。而 b.com 是无法直接访问的,于是图片加载失败。

我的问题是:难道我用 nginx 反向代理页面的话,绝对路径的资源真的都不会经过 nginx 这层吗?

有老哥给我科普一下吗,这和我的理解不一样阿,我一直以为 nginx 就是把我请求的所有资源一起在它那里请求完给我。不是吗?

回复
阅读 1.1k
2 个回答

你的理解有问题
nginx不管怎么样,都需要你先访问到他,然后他根据一些规则,去对应的服务器去资源。

你现在直接跳过了他。咋的,你在内网,就希望外网的nginx可以拦住你?

clipboard.png

首先, 浏览器看不到后端, 你写啥就是啥.
第一个能过去是因为浏览器锁定了源. 因为你的源就是 a.com
第二个如果你访问百度的图片, 比如: http://a.baidu.com/img.jpg, 百度需要再对 a.baidu.com 做反向代理到 b.baidu.com, c.baidu.com, ...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏