一、LNT:Linux Nginx Tomcat
原理:Client (http) --> nginx (reverse proxy)(http) --> tomcat (http connector)
1、配置tomcat
配置java,去oracle官网下载JDK1.8的软件包
[root@centos7 app]# ls
jdk-8u161-linux-x64.tar.gz
把JDK解压至/usr/local目录下,并创建软链接
[root@centos7 app]# tar -xf jdk-8u161-linux-x64.tar.gz -C /usr/local
[root@centos7 app]# ln -sv jdk1.8.0_161 java-1.8.0
[root@centos7 local]# ll java-1.8.0
lrwxrwxrwx 1 root root 13 12月 31 21:38 java-1.8.0 -> jdk1.8.0_161/
配置java的环境变量
[root@centos7 local]# vim /etc/profile.d/java_path.sh
JAVA_HOME=/usr/local/java-1.8.0
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
2、安装tomcat,这里安装的是tomcat8.5.49版本的。
解压安装包,把安装包解压到/usr/local目录下。
[root@centos7 local]# tar xf /data/app/apache-tomcat-8.5.49.tar.gz -C /usr/local
创建软链接
[root@centos7 local]# ln -sv apache-tomcat-8.5.49 tomcat
[root@centos7 local]# ll tomcat
lrwxrwxrwx 1 root root 21 12月 31 23:52 tomcat -> apache-tomcat-8.5.49/
配置tomcat环境变量
[root@centos7 local]# cat /etc/profile.d/tomcat_path.sh
CATALINA_BASE=/usr/local/tomcat
PATH=$PATH:$CATALINA_BASE/bin
export CATALINA_BASE PATH
创建tomcat系统用户,因为运行tomcat进程要以tomcat的身份来运行(也可以以root身份运行,不过建议以tomcat身份运行比较好)
[root@centos7 local]# useradd -r tomcat
[root@centos7 local]# chown -R tomcat.tomcat /usr/local/apache-tomcat-8.5.49/
[root@centos7 local]# ll apache-tomcat-8.5.49/
总用量 124
drwxr-x--- 2 tomcat tomcat 4096 12月 31 23:52 bin
-rw-r----- 1 tomcat tomcat 19318 11月 18 02:48 BUILDING.txt
drwx------ 3 tomcat tomcat 276 1月 1 19:43 conf
-rw-r----- 1 tomcat tomcat 5407 11月 18 02:48 CONTRIBUTING.md
drwxr-x--- 2 tomcat tomcat 4096 12月 31 23:52 lib
-rw-r----- 1 tomcat tomcat 57011 11月 18 02:48 LICENSE
drwxr-x--- 2 tomcat tomcat 239 1月 1 18:26 logs
-rw-r----- 1 tomcat tomcat 1726 11月 18 02:48 NOTICE
-rw-r----- 1 tomcat tomcat 3255 11月 18 02:48 README.md
-rw-r----- 1 tomcat tomcat 7136 11月 18 02:48 RELEASE-NOTES
-rw-r----- 1 tomcat tomcat 16262 11月 18 02:48 RUNNING.txt
drwxr-x--- 2 tomcat tomcat 30 12月 31 23:52 temp
drwxr-x--- 8 tomcat tomcat 93 1月 1 12:46 webapps
drwxr-x--- 3 tomcat tomcat 22 1月 1 00:04 work
启动tomcat
[root@centos7 local]# su - tomcat -c "catalina.sh start"
[root@centos7 local]# ps -aux | grep java
tomcat 9483 0.3 9.3 3011936 175500 pts/0 Sl 18:06 1:02 /usr/local/java-1.8.0/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 13397 0.0 0.0 112676 980 pts/1 S+ 23:07 0:00 grep --color=auto java
部署测试站点,tomcat的默认站点路径是/usr/local/tomcat/webapps,因此在此目录下新建一个test文件夹,用于放置测试页面及一些相关配置文件等。
[root@centos7 webapps]# mkdir test
[root@centos7 webapps]# mkdir -pv /usr/local/tomcat/webapps/test/{classes,lib,WEB-INF}
创建index.jsp文件
[root@centos7 test]# vim index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<% out.println("hello world");%>
</body>
</html>
访问测试
2、配置nginx反代
安装nginx,安装在tomcat服务的主机上,也可以安装在另外一台主机
[root@centos7 test]# yum install nginx
[root@centos7 test]# systemctl start nginx
编辑配置文件/etc/nginx/conf.d/tomcat_proxy.conf ,配置反代至后端的tomcat主机。
[root@centos7 conf.d]# vim /etc/nginx/conf.d/tomcat_proxy.conf
server {
listen 81;
server_name www.tomcat.com;
#root /usr/share/nginx/html;
location / {
proxy_pass http://192.168.239.128:8080/test/;
}
error_page 404 /404.html;
location = /40x.html {
}
}
通过上面的nginx配置信息可以知道,nginx监听在81端口上,当客户端访问81端口时就反代至后端的tomcat主机。因此重启nginx服务,客户端即可访问到。
注意:此处访问的是81端口
二、LAMT:Linux Apache(httpd) Tomcat
配置HTTP反代,要使用HTTP做反向代理,得确保加载proxy相关的模块。使用httpd -M可以列出HTTP动态加载的模块。其中就有关于反向代理的模块,还包含了反向代理支持的各种协议模块。
[root@centos7 conf.d]# httpd -M | grep proxy
proxy_module (shared) ##HTTP代理模块
proxy_ajp_module (shared) ##适配ajp协议客户端
proxy_balancer_module (shared)
proxy_connect_module (shared)
proxy_express_module (shared)
proxy_fcgi_module (shared)
proxy_fdpass_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared) ##适配http协议客户端;
proxy_scgi_module (shared)
proxy_wstunnel_module (shared)
配置proxy_http_module代理
原理:Client (http) --> httpd (proxy_http_module)(http) --> tomcat (http connector)
1、配置虚拟主机,虚拟主机监听在81端口上。
[root@centos7 conf.d]# vim /etc/httpd/conf.d/tomcat_proxy.conf
listen 81
<VirtualHost *:81>
#DocumentRoot "/var/www/html/sitea"
ServerName www.tomcat-proxy.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://192.168.239.128:8080/test/
ProxyPassReverse / http://192.168.239.128:8080/test/
<Location />
Require all granted
</Location>
</VirtualHost>
2、在客户端上编辑/etc/hosts,解析域名。
[root@centos7 conf.d]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 centos7.cwj.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.239.128 www.tomcat-proxy.com
3、客户端访问
配置proxy_ajp_module代理
1、HTTP配置ajp代理,首先要加载ajp模块。
[root@centos7 conf.d]# httpd -M | grep proxy
proxy_module (shared)
proxy_ajp_module (shared)
2、配置AJP代理的虚拟主机,
注意:这里使用的是ajp协议,tomcat使用ajp协议时时8009端口
[root@centos7 conf.d]# vim tomcat_ajp_proxy.conf
listen 89
<VirtualHost *:89>
#DocumentRoot "/var/www/html/sitea"
ServerName www.tomcat-ajp-proxy.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / ajp://192.168.239.128:8009/test/
ProxyPassReverse / ajp://192.168.239.128:8009/test/
<Location />
Require all granted
</Location>
</VirtualHost>
3、客户端访问