Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

nginx 配置之 proxy_pass 正向代理

  proxy_pass 做的事实际上就是请求另一台服务器,并把资源响应给客户端。那么它就不仅可以做反向代理,也可以做正向代理。其实两个概念差不多,主要是主导方是谁。正向代理就是动态地接受客户端传过来的各种参数,告诉服务器想请求到哪儿,把主导方交给客户端。
  但是既然说 proxy_pass 的目标域名是在 nginx 启动时解析的,那么动态传过去的域名要怎么办呢?所以在使用 proxy_pass 代理到客户端指定的服务器前我们应该先告诉 nginx 使用什么 DNS 服务器来解析域名。http_core 模块有提供一个 resolver 指令用于设置 nginx 使用的 DNS 服务器。于是有: resolver 114.114.114.114; location / { proxy_pass http://$host$request_uri; }   此处的实现 nginx 和 tengine 有点小差异。nginx 必须使用 resolver 指令告诉它使用哪个 DNS,而 tengine 有一个小小的优化,会默认使用 /etc/resolv.conf 中配置的 DNS 服务器,即使没有通过 resolver 指令来指定 DNS 服务器也能用。不过我还是不推荐使用系统自带的 /etc/resolv.conf。根据统一配置原则,一个服务的配置应该尽可能地放在一起,不要依赖系统配置,因为系统配置往往是不可控的。
  另外,直接设置一个 resolver 对于一个生产级的配置而言显然是不够的,我们可能还要知道域名解析的超时时间。这可以通过配套的 resolver_timeout 进行设置。
  最后还有一个坑。通过 nginx 配置正向代理我们只能玩一玩 http 的代理,如果要玩 https 代理那就要呵呵了。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^