我的环境是一台centos7的腾讯云服务器,同时安装了nginx和tomcat,配置反向代理以将对nginx的请求转发给tomcat处理。
反向代理不仅可以使用tomcat,诸多其他服务器,如jetty都可以。
反向代理的作用有很多,可以把静态文件交由nginx来进行处理,作为静态服务器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。还可以配置负载均衡,虚拟主机,FastCGI等功能。
下边详细介绍如何配置反向代理。nginx的安装过程,参见nginx官网安装指南 ,tomcat安装,请参考Apache tomcat 官方指南
首先来看一下nginx配置文件中我们需要了解的几个配置项
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
这段代码在server里面,相当于一个代理服务器,当然可以配置多个。
下面我们仔细来分析一下:
listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。
server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件服务器很有用。
index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
下面的error_page是代表错误的页面,这里我们暂时不用,先不管它。
那我们知道了具体的配置了,怎么让它访问localhost时转到tomcat时。实际上就修改两个地方:
server_name localhost:8080;
location / {
proxy_pass http://localhost:8080;
}
检查nginx配置是否正确(这一步也可以省略)
nginx -t
重新加载nginx配置文件
nginx -s reload
重新访问服务器ip或域名,原来的nginx服务器的web界面就会变成tomcat的web界面。
参考:nginx官网指南