使用 nginx 在服务器上反向代理 Tomcat

反向代理概述

在服务器上使用 nginx 软件并添加相关配置就可以实现反向代理。所谓反向代理,就是通过访问代理服务器(安装并配置了 nginx)的特定端口或域名,将访问请求转发到其他服务器或其他服务上。举例来说,我在服务器上运行了 Tomcat 软件,它打开的是 localhost:8080,现在我想通过服务器的 IP 地址从外网访问 Tomcat 服务(比如:服务器IP:8082),那么这时就可以使用 nginx 进行反向代理。在上面的例子里,nginx 的大致工作过程是:经过配置后,nginx 将开始监听服务器的 8082 端口,当服务器收到来自 8082 端口的访问请求时,nginx 将请求转发到 localhost:8080,返回数据也是同样的过程,相当于 nginx 在中间起到了仲裁的作用。

配置过程

我的服务器上的 nginx 配置文件位于 /usr/local/nginx/conf/nginx.conf 中,在文件的 http{ ... } 大括号中加入:

1
2
3
4
5
6
7
8
9
server
{
listen 8082;
server_name _;

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

然后重启 nginx (我这里使用的是 lnmp,也可以使用不同的方法重启 nginx):

1
sudo lnmp nginx restart

现在,在浏览器的地址栏输入 服务器IP:8082,就可以访问运行在服务器上的 Tomcat服务了。

小插曲

实际上在配置完成后我并不能直接访问服务器的 8082 端口,这是因为我使用的阿里云服务器没有对外打开这个端口。需要进入阿里云控制台,在防火墙配置中将该端口打开才能正常访问。