插件窝 干货文章 nginx和tomcat访问图片和静态页面怎么配置

nginx和tomcat访问图片和静态页面怎么配置

静态 Nginx 资源 proxy 266    来源:    2025-04-25

Nginx与Tomcat配置静态资源访问方案

方案概述

在Nginx和Tomcat的架构中,通常建议将静态资源(如图片、CSS、JS、HTML页面)交由Nginx直接处理,而动态请求则转发给Tomcat。这样可以提高系统性能,减轻Tomcat负担。

配置方法

方案一:Nginx直接处理静态资源(推荐)

  1. Nginx配置
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;
    }
}
  1. Tomcat配置

- 不需要特殊配置,只需确保动态请求能正常处理

方案二:Tomcat处理静态资源,Nginx只做反向代理

  1. Nginx配置
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;
    }
}
  1. Tomcat配置

- 确保静态资源放在Tomcat的webapps目录下相应位置 - 可以配置conf/web.xml中的DefaultServlet来优化静态资源处理

方案三:混合模式(部分静态资源由Nginx处理)

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;
    }
}

最佳实践建议

  1. 静态资源分离:将静态资源与动态内容分离,静态资源由Nginx直接处理
  2. 启用缓存:为静态资源设置适当的缓存头
  3. 资源压缩:在Nginx中启用gzip压缩
  4. CDN考虑:对于高流量网站,考虑将静态资源放到CDN
  5. 目录结构:保持清晰的目录结构,例如: /var/www/static/ ├── images/ ├── css/ ├── js/ └── html/

验证配置

  1. 检查Nginx配置语法:
nginx -t
  1. 重新加载Nginx配置:
nginx -s reload
  1. 访问测试:

- 直接访问静态资源URL,确认由Nginx直接响应 - 访问动态页面,确认请求被正确转发到Tomcat

通过以上配置,您可以高效地利用Nginx处理静态资源,同时将动态请求转发给Tomcat处理,从而优化整体系统性能。