山地人

Nginx配置反向代理

山地人
山地人
2021-07-26

这一篇,我们学习如何使用Nginx来配置反向代理。

反向代理

反向代理reverse proxy:是通过一台代理服务器将接收到的连接请求,转发给内部网络的其他服务器,并把内部服务器的处理结果返回给请求客户端的服务。这里的反向代理服务器就有点像是中间联络人,负责在客户端(用户的浏览器)和真正处理请求的服务器之间的传声筒。

现在假设我们内部有一个服务器应用,我们用node搭建了一个简单的服务,启动后会在服务器上监听8080端口。如果直接请求这个服务,会返回Hello World字样的页面。

启动终端,然后使用curl localhost:8080命令访问服务的首页。

现在我们想让外部通过80端口能够访问到这台http://localhost:8080的服务器。这时候,我们就需要使用Nginx来做这个反向代理服务器的角色。 这里需要用到proxy_pass指令来设置反向代理的映射关系。

proxy_pass指令

这条指令的作用是将请求转到指定的URL中。

语法默认值上下文(Context)
proxy_pass URL;-location, if in location, limit_except

利用这条指令,我们将所有匹配到的请求,都转发到http://localhost:8080中,因此得到下面的这条配置。

location / {
proxy_pass http://localhost:8080;
}

启动终端,然后运行代码,看代理服务器是否能正常工作。

代理部分请求

利用上面的这个特性,我们可以让一个域名中的部分URL访问静态资源,而一些特定的URL则交给专门的内部服务去处理。

比如:对于/api开头的URL交给node服务器去处理,而其他请求作为静态资源访问。

启动终端,然后运行代码,看代理服务器是否能正常工作。

至此,本篇教程也到了该和你说再见的时候了,我们下期再见。

学完本篇互动教程,如果你觉得体验不错,可以把网页链接发送给你的小伙伴,让他/她也来感受一下。当然,你也可以继续看看网站上其他的的互动教程,希望`idev365`能够给你带来收获。

学习教程的过程中碰到了问题,或者对idev365有什么改进意见和想法,欢迎加入idev365微信内测群,和山地人交流你的想法。