Nginx配置反向代理
date
icon
slug
status
tags
type
password
summary
前言
Nginx和Apache一样是一款轻量级的web服务器,反向代理服务器。Web服务器我们都知道能够用来托管一个Web服务。
正向代理
很多人可能听说过,或者正在使用代理服务,我们平常所说的代理对于用户来说都是“正向代理”。
正向代理能够向被访问的服务器隐藏访问者的信息,因此也能够通过代理服务器绕过防火墙,访问由于政策原因被限制的网站。

反向代理
而反向代理,则和正向代理恰恰相反,正向代理代理的是“客户端”,使用代理服务器代理客户端来访问服务器,而反向代理,则是代理的“服务端”,客户端访问服务端访问到的先是代理服务器,通过代理服务器才能够真正连接到目标服务器。

如上图所示,我们使用反向代理的时候,客户端访问baidu.com,实际上访问到了百度的反向代理服务器,反向代理服务器再根据各个服务器的负载,响应速度来进行分发。这样不仅使得服务端的资源得到了最大的利用,同时还使得位于反代服务器后的业务服务器得到了保护。
安装和配置
安装完成后访问服务器ip,应该会看到nginx的默认欢迎页。
nginx的默认配置文件一般在/etc/nginx/目录下,目录下sites-enabled中的default为nginx的默认欢迎页的配置文件。而nginx的主配置文件为nginx.conf,其中通过include来引用了位于其他目录下的各部分nginx配置文件。
配置文件解读
我们最常用的部分是配置文件中的http块,http块其中又嵌套了server块,每个server块都是一个虚拟主机,Server块中还包含了location块,location块则指定了被访问资源的虚拟位置。
以上是一个示例http块,其中包含了一个具有两个location的虚拟主机,如果我们要托管一个静态页面,则可以在location中指定root为静态文件的目录,而如果我们要进行反向代理,则可以使用proxy_pass将指定的url转发到监听的端口上。
listen | 监听端口号 |
server_name | 匹配请求中的Host字段,满足端口号和Host字段才会被该虚拟主机捕获 |
location | location为相对路径,也可使用正则表达式进行匹配 |
root | 静态页面的目录 |
index | 静态页面的主页文件 |
proxy_pass | 要进行反向代理的端口、地址 |
反向代理的使用场景
在我最开始接触到linux服务器的时候,常常会有多个服务部署在一台服务器上,但由于只有80和443端口可以不带端口号访问,为了访问对应的服务的时候能更优雅,于是才了解到nginx的反向代理,反向代理在我目前使用最多的场景就是在单服务器上的多个服务,通过映射多个域名到服务器,然后nginx通过server_name来分辨目标服务并进行转发。
像这样就可以实现,输入domain1.borry.org访问位于8080端口的服务,输入domain2.borry.org访问位于6789端口的服务,实现了端口的复用。