Nginx+tomcat负载均衡时静态页面报404

百度到的问题解决BLOG
nginx+2台tomcat负载均衡,应用程序已部署,单独访问tomcat时,可以访问到所需要的页面,配置负载均后,访问不到内容
## 配置反向代理的后端tomcat集群
upstream web_server{
server 172.27.14.200:8080 weight=1 max_fails=2 fail_timeout=30s;
server 172.27.14.200:8090 weight=1 max_fails=2 fail_timeout=30s;
}
      #注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
      proxy_temp_path /data0/proxy_temp_dir;
      #设置Web缓存区名称为cache_one,内存缓存空间大小为50MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为10GB。
      proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=10g;
server
     {
         listen       80;
         server_name  web_server;  
         #自动补全"/"
         if (-d $request_filename)
        {
         rewrite ^/(.*)([^/])$ http://$host/$1$2/ last;
         }
        #实现网页动静态分离
         location /
        {
          root /data0/htdocs/tomcat;
          index index.html index.htm;
                         if (!-f $request_filename)
                        {
                         rewrite ^/([a-zA-Z]+).html  /$1.jsp last;
                         proxy_pass http://web_server;
                         break;
                         }
           }
 
server {
listen 80;
server_name web_server;
## 网页、视频、图片文件从本地读取,且定义在浏览器中缓存30天静态文件
location ~.*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://web_server; ##此处蓝色内容应该可以用指定路径的方法访问,我写入的是tomcat下应用的目录,还是报错,暂未解决。。。
expires 30d;
}
## js、css文件从本地读取,且定义在浏览器中缓存1小时
#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存  内容到二级缓存目录内
location ~ .*\.(js|css)?$
{
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://web_server; ##此处蓝色内容应该可以用指定路径的方法访问,我写入的是tomcat下应用的目录,还是报错,暂未解决。。。
expires 1h;
}
 ## 动态文件转发到后端的tomcat集群
location ~ .*\.(php|jsp|cgi|jhtml|action)?$
{
proxy_pass http://web_server;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
#charset koi8-r;
 
#access_log logs/host.access.log main;
 
location / {
root html;
index index.html index.htm;
}
 
以下内容可以加入静态文件的配置中,本次搭建未配置。
     #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到 upstream负载均衡池中的另一台服务器,实现故障转移。
       proxy_next_upstream http_502 http_504 error timeout invalid_header;
       proxy_cache cache_one;
       #对不同的HTTP状态码设置不同的缓存时间
       proxy_cache_valid 200 10m;
       proxy_cache_valid 304 1m;
       proxy_cache_valid 301 302 1h;
       proxy_cache_valid any 1m;
 
         编辑tomcat的配置文件server.xml
         在Hosts文件里面加上如下字段:
         <Context path="" docBase="/data0/htdocs/tomcat/ROOT" debug="0" reloadable="true" />
          解释:tomcat默认回去"webapps"目录去查找要访问的文件,如果没有找到就去"docBase"目录去寻找。这个这段也可以不加,自己随意。此处应该是
上一篇:nginx+tomcat负载均衡和session复制


下一篇:nginx+tomcat负载均衡策略