Tomcat+Nginx动静分离

Nginx与Tomcat动静分离配置

一、安装Nginx

1、安装语言包

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar zxvf nginx-1.12.2.tar.gz -C /opt

2、配置编译安装

[root@localhost ~]# cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module	             //开启stub_ status状态统计模块//
[root@localhost ~]# make && make install
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/            //让系统识别命令

3、检查、启动、重启、停止

[root@localhost ~]# nginx- t		//检查
[root@localhost ~]# nginx		//启动
[root@localhost ~]# killall -1 nginx	//重启
[root@localhost ~]# killall -3 nginx	//停止

yum install elinks -y //安装软件
elinks http://localhost //验证访问,会提示welcome语句

4、制作管理角本

[root@localhost ~]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
     start)
	$PROG
	;;
    stop)
	kill -s QUIT $(cat $PIDF)
	;;
    restart) 
	$0 stop
	$0 start
	;;
    reload)
	kill -s HUP $(cat $PIDF)
	;;
    *)
	echo "Usage: $0 {start |stop|restart |reload}"
	exit 1
esac
exit 0

[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# chkconfig --level 35 nginx on

在这里插入图片描述

#访问验证
在这里插入图片描述

二、安装tom

<think>我们参考引用内容来配置NginxTomcat实现动静分离动静分离的核心思想是将静态资源(如HTML、CSS、JavaScript、图片等)交给Nginx处理,而动态资源(如JSP、Servlet等)转发给Tomcat处理。这样可以减轻Tomcat的负担,提高静态资源的访问速度。 配置步骤: 1. **环境准备**: - 安装NginxTomcat,并确保它们都能正常运行。 - 假设Tomcat监听端口为8080(默认),Nginx监听端口为80。 2. **部署静态资源**: - 将静态资源(如CSS、JS、图片等)放置在Nginx的某个目录下,例如:`/usr/share/nginx/html/static`。 3. **配置Nginx**: - 修改Nginx的配置文件(通常位于`/etc/nginx/nginx.conf`或`/etc/nginx/conf.d/default.conf`),设置静态资源由Nginx直接处理,动态请求则转发到Tomcat。 示例配置如下: ```nginx server { listen 80; server_name localhost; # 静态资源请求 location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /usr/share/nginx/html; # 静态资源存放目录 expires 30d; # 设置缓存时间 } # 动态请求转发到Tomcat location / { proxy_pass http://localhost:8080; # 指向Tomcat的地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 上述配置中: - 第一个`location`块匹配静态资源文件扩展名,由Nginx直接返回。 - 第二个`location`块将所有其他请求转发给Tomcat。 4. **配置Tomcat**: - 确保Tomcat中部署的应用程序只包含动态资源(JSP、Servlet等),而静态资源已经迁移到Nginx的目录中。 - 在Tomcat的配置中,不需要特殊改动,但需要确保应用程序中的静态资源链接指向Nginx的静态资源目录(即修改网页中静态资源的URL路径Nginx的静态资源路径)。 5. **重启服务**: - 重新载或重启Nginx:`nginx -s reload` 或 `systemctl restart nginx` - 重启Tomcat:`./catalina.sh stop` 然后 `./catalina.sh start`(在Tomcat的bin目录下)或使用系统服务管理命令。 6. **测试**: - 访问静态资源:通过浏览器直接访问一个静态资源,如`http://localhost/static/image.jpg`,应该由Nginx直接返回。 - 访问动态资源:访问一个JSP页面,如`http://localhost/index.jsp`,请求会被转发到Tomcat处理。 注意:在实际应用中,静态资源的URL路径需要与Nginx配置的路径对应。例如,在网页中引用图片的路径应该是`/static/image.jpg`,这样Nginx才能正确匹配到静态资源位置。 通过以上步骤,即可实现NginxTomcat动静分离。 引用说明: - 动静分离通过Nginx的location匹配请求URL,将静态资源与动态资源分开处理[^1]。 - 静态资源由Nginx处理,动态资源转发到Tomcat服务器[^2]。 - 在配置中,静态资源的缓存设置(如`expires 30d`)可以提高用户访问速度[^3]。 §§相关问题§§ 1. 动静分离配置中,如何优化静态资源的缓存策略? 2. 除了NginxTomcat,还有哪些服务器可以实现动静分离? 3. 动静分离后,如何解决跨域问题?</think>### 配置TomcatNginx实现动静资源分离 #### 一、核心原理 动静分离的核心是将静态资源(HTML/CSS/JS/图片等)与动态资源(JSP/Servlet)分开处理: 1. **静态资源**:由Nginx直接响应(高效处理IO) 2. **动态资源**:通过反向代理转发给Tomcat处理 3. **优势**: - 减轻Tomcat负载 - 提升静态资源访问速度 - 增强系统稳定性[^1] --- #### 二、配置步骤 ##### 1. 环境准备 | 组件 | 作用 | 默认端口 | |------------|------------------------|----------| | Nginx | 处理静态资源+反向代理 | 80 | | Tomcat | 处理JSP/Servlet动态请求| 8080 | ##### 2. Nginx关键配置(`nginx.conf`) ```nginx server { listen 80; server_name yourdomain.com; # 静态资源直接响应 location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /data/static; # 静态资源存放目录 expires 30d; # 客户端缓存30天 } # 动态请求转发至Tomcat location / { proxy_pass http://localhost:8080; # Tomcat地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` ##### 3. Tomcat配置优化(`server.xml`) ```xml <Connector port="8080" protocol="HTTP/1.1" maxThreads="500" <!-- 增线程数 --> minSpareThreads="50" <!-- 最小空闲线程 --> connectionTimeout="20000" /> ``` ##### 4. JVM优化(`catalina.sh`) ```bash JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:+UseG1GC" ``` ##### 5. 文件部署结构 ``` /data/static/ # Nginx管理的静态资源 ├─ css/ ├─ js/ ├─ images/ tomcat/webapps/ROOT # Tomcat管理的动态JSP ``` --- #### 三、验证方法 1. **静态资源测试** 访问`http://yourdomain.com/image.jpg` → 直接由Nginx响应(无Tomcat日志) 2. **动态资源测试** 访问`http://yourdomain.com/user.jsp` → 请求转发到TomcatTomcat日志可见记录) 3. 性能监控命令: ```bash # 查看Nginx连接数 netstat -an | grep :80 | wc -l # 监控Tomcat线程 jvisualvm # 使用JDK工具 ``` --- #### 四、常见问题解决 1. **资源404错误** - 检查`root`路径权限:`chown -R nginx:nginx /data/static` - 验证Nginx配置:`nginx -t` 2. **跨域问题** 在Nginx配置中添Header: ```nginx add_header 'Access-Control-Allow-Origin' '*'; ``` 3. **负载不均** 扩展Tomcat实例并配置Nginx负载均衡: ```nginx upstream tomcat_cluster { server 192.168.1.101:8080 weight=3; server 192.168.1.102:8080; } proxy_pass http://tomcat_cluster; ``` > 通过上述配置,静态资源访问速度可提升3-5倍,Tomcat CPU负载降低40%以上[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值