在Nginx和Tomcat的架构中,通常建议将静态资源(如图片、CSS、JS、HTML页面)交由Nginx直接处理,而动态请求则转发给Tomcat。这样可以提高系统性能,减轻Tomcat负担。
server {
listen 80;
server_name yourdomain.com;
# 静态资源目录
location ~* \.(jpg|jpeg|png|gif|ico|css|js|html|htm)$ {
root /path/to/your/static/files;
expires 30d; # 设置缓存时间
access_log off; # 可选:关闭静态资源访问日志
}
# 动态请求转发到Tomcat
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 不需要特殊配置,只需确保动态请求能正常处理
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 确保静态资源放在Tomcat的webapps目录下相应位置
- 可以配置conf/web.xml
中的DefaultServlet
来优化静态资源处理
server {
listen 80;
server_name yourdomain.com;
# 图片资源由Nginx直接处理
location ~* \.(jpg|jpeg|png|gif|ico)$ {
root /path/to/images;
expires 30d;
try_files $uri =404;
}
# 其他静态资源
location ~* \.(css|js|html|htm)$ {
root /path/to/static/files;
expires 7d;
}
# 动态请求转发到Tomcat
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/var/www/static/
├── images/
├── css/
├── js/
└── html/
nginx -t
nginx -s reload
- 直接访问静态资源URL,确认由Nginx直接响应 - 访问动态页面,确认请求被正确转发到Tomcat
通过以上配置,您可以高效地利用Nginx处理静态资源,同时将动态请求转发给Tomcat处理,从而优化整体系统性能。