2017 年 09 月 - 1 文章

使用nginx建立反向代理

  |   0 评论   |   94 浏览

〇·前言

现在网上各种云主机都非常便宜,在云主机上建站的时候,我们可能会在一台主机上部署多个站点并绑定不同的一级或二级域名,并且多个站点可能使用不同编程语言编写的,比如我目前的主机上放置了一个GO语言的代码管理平台、一个PHP语言的主页、一个JAVA的监控平台,他们分别需要不同的容器来启动,那么如何才能使用一个主机(IP地址相同)配置成不同的域名访问不同的容器呢?

这时,就需要nginx来出手相助了。nginx是一个小巧并功能强大的代理服务器,通常用来做负载均衡或正、反向代理等服务,我们这篇文章就要介绍到其中的反向代理功能。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 -引用自百度百科

一·下载 & 安装

访问Nginx官方网站https://nginx.org,点击download进入https://nginx.org/en/download.html页面,如图所示:

其中Mainline version是测试版,Stable version是稳定版,Legacy versions是历史版本。建议下载Stable version稳定版,Nginx同时支持Linux和Windows系统,选择符合自己操作系统的版本即可。

文章中下载的是Windows的稳定版,下载后是一个压缩包,解压缩后如图所示:

启动的话,直接运行nginx.exe即可,无需安装。

二·配置

找到nginx.conf配置文件并打开,如图所示:

首先,删除原server配置。

然后添加我们server反向代理配置信息如下:

server {
	listen       80;
	server_name  liuxp.me;
	location / {
		proxy_pass http://101.200.57.209:8080; 
		proxy_set_header   Host    $host; 
		proxy_set_header   X-Real-IP   $remote_addr; 
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
	}
}

这段配置代表监听80端口的liuxp.me域名,将其中所有请求反向代理到指定IP地址的8080端口。

server可以配置多个,我们再配置另一个反向代理,如下:

server {
	listen       80;
	server_name  source.liuxp.me;
	location / {
		proxy_pass http://127.0.0.1:3000;
		proxy_set_header   Host    $host;
		proxy_set_header   X-Real-IP   $remote_addr;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		client_max_body_size 128M;
	}
}

这段配置代表监听80端口的source.liuxp.me域名,将其中所有请求反向代理到指定IP地址的3000端口,注意其中的client_max_body_size配置项,这个配置项的含义是http请求体的最大长度,由于我代理的3000端口服务是代码管理服务,经常传一些大文件,所以配置成了128M。大家在代理一些请求体可能比较大的服务的时候,建议添加该配置项。

配置完成的nginx.conf文件如图所示:

三·启动

配置好后,双击Nginx.exe,会一闪而过一个cmd窗口,然后就什么反应也没有了。这时Nginx其实已经启动了,打开任务管理器,我们可以看到两个nginx进程,一个是主进程,一个是工作进程。存在两个nginx进程则代表我们已经正常启动了nginx。

打开浏览器访问我们配置好的地址,应该就可以正常看到被代理的服务了。至此,我们的反向代理就成功配置并生效了。

原创文章,版权归作者刘小平所有,在保留作者姓名与原文地址的情况下允许转载。