目录
引言
环境:
Nginx主机安装
Tomcat 配置
动静分离配置
Tomcat1 server 配置
Tomcat2 server 配置
Nginx server 配置
测试结果
总结
以LNMP为例,一个企业内部最基础的架构组成需要一个处理静态Web服务的页面,一个动态Web服务的页面和数据库,而我们实现了在Linux平台上,实现了Nginx + PHP 实现动静分离,而实际生产中往往一台nginx 需要“对应”多个动态处理的服务(及tomcat),所以如何将前端接收到的动态请求转交给后端多个tomcat处理,是我们此处研究的内容
两台Tomcat处理动态和一台Nginx处理静态
systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make useradd -M -s /sbin/nologin nginx cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ cd nginx-1.12.0/ ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-file-aio \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ vim /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile =/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target chmod 754 /lib/systemd/system/nginx.service systemctl start nginx.service systemctl enable nginx.service
vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH ###加载生效、查看版本 rpm -ivh jdk-8u201-linux-x64.rpm source /etc/profile.d/java.sh java -version 3、安装启动 Tomcat ① 解压apache-tomcat软件包 cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16 /usr/local/tomcat ##启动tomcat## #优化管理 ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/ ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/ #开启服务 startup.sh netstat -natp | grep 8080
mkdir /usr/local/tomcat/webapps/test vim /usr/local/tomcat/webapps/test/index.jsp #动态页面的配置 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("动态页面 1,http://www.test1.com");%> </body> </html> #添加虚拟主机配置 vim /usr/local/tomcat/conf/server.xml ======72行新增 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> </Host> shutdown.sh startup.sh
mkdir /usr/local/tomcat/webapps/test vim /usr/local/tomcat/webapps/test/index.jsp #动态页面的配置 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test2 page</title> </head> <body> <% out.println("动态页面 2,http://www.test2.com");%> </body> </html> #配置虚拟主机 vim /usr/local/tomcat/conf/server.xml #修改配置文件 =======72行新增 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> </Host> #重启服务 shutdown.sh startup.sh
#准备静态页面 echo '<html><body><h1>this is static</h1></body></html>' > /usr/local/nginx/html/index.html cd /usr/local/nginx/html/img/ #上传一张图片到此目录下 [root@localhost img]#ls cat.jpg vim /usr/local/nginx/conf/nginx.conf ...... http { ...... #gzip on; #配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大 upstream tomcat_server { server 192.168.255.150:8080 weight=1; server 192.168.255.200:8080 weight=1; } server { listen 80; server_name www.ly.com; #charset koi8-r; #access_log logs/host.access.log main; #配置Nginx处理动态页面请求,将 .jsp 文件请求转发到Tomcat 服务器处理 location ~ .*\.jsp$ { proxy_pass http://tomcat_server; #设置后端的 Web 服务器可以获取远程客户端的真实IP #设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认host的值为proxy_pass指令设置的主机名 proxy_set_header HOST $host; #把$remote_addr赋值给X-Real-IP(自定义),来获取源IP proxy_set_header X-Real-IP $remote_addr; #在Nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { root html; index index.html index.htm; } systemctl restart nginx.service
在部署Tomcat的时候一定要记得rpm升级jdk的环境,如果不升级Tomcat可以正常启动,但是监听端口是起不来的,所以需要多多注意
还有在配置Tomcat主机文件的时候,需要注意语句的完整性,因为对于我们运维来说不是特别擅长的这部分
在配置动静分离,主要是配置我们的反向代理,同时要设置相同权重的Tomcat,实现高性能负载均衡,在测试效果的时候,注意我们是从webapps后面的文件位置开始