Nginx学习之十:Nginx+Tomcat多站点访问默认主页问题

Nginx+Tomcat配置后,访问多个站点时,默认主页老转向Tomcat的主页。

经过仔细检查,发现问题所在,我想这也是大家常常需要注意的地方,否则经常出现以上类似问题会让人懊恼的。

1.Tomcat的server.xml文件配置多个站点:

01 <Engine name="Catalina" defaultHost="www.abc.com">
02   <Host name="www.abc.com"  appBase="/home/www/abc"
03             unpackWARs="true" autoDeploy="true"
04             xmlValidation="false" xmlNamespaceAware="false">
05     <context path="" docBase="/home/www/abc" debug="0" reloadable="true"></context>
06   </Host>
07   <Host name="www.abd.com"  appBase="/home/www/abd"
08             unpackWARs="true" autoDeploy="true"
09             xmlValidation="false" xmlNamespaceAware="false">
10     <context path="" docBase="/home/www/abd" debug="0" reloadable="true"></context>
11    </Host>
12 </Engine>

Engine 的 dafaultHost :表示访问该tomcat默认进入的主机,注意一定不能是localhost,不然别人通过你的ip访问,就会默认进入tomcat的管理界面。
Host 的 name:表示该主机绑定的域名,如果绑定localhost则可以通过在浏览器中输入localhost访问该Host。
Host的 appBase:表示该主机绑定的文件存放路径,可以使用相对路径或绝对路径。
注意:Host的appBase这里必须写绝对路径,即跟context的docBase路径一致,否则访问指定域名时访问不了配置的站点的主页。把项目相关文件放入到你配置context的docBase路径的ROOT文件夹里。

 

2.看看Nginx反向代理Tomcat的配置:

001 user www;
002
003 # 根据你服务器的cpu核数来确定此值
004 worker_processes 2;
005
006 error_log logs/error.log crit;
007 #error_log logs/error.log notice;
008 #error_log logs/error.log info;
009
010 #pid logs/nginx.pid;
011
012 worker_rlimit_nofile 65535;
013
014 # events事件主要用来确定Nginx使用哪种算法
015 events {
016  use epoll;
017  worker_connections 65535;
018  }
019
020 http {
021  include mime.types;
022  default_type application/octet-stream;
023
024  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
025  # '$status $body_bytes_sent "$http_referer" '
026  # '"$http_user_agent" "$http_x_forwarded_for"';
027
028 # 由于Nginx用于代理Tomcat,所以记录访问日志的事情交给Tomcat来做好了,注释掉
029 #access_log logs/access.log main;
030
031 sendfile on;
032  tcp_nopush on;
033  tcp_nodelay on;
034
035 #keepalive_timeout 0;
036  keepalive_timeout 65;
037
038 server_names_hash_bucket_size 128;
039  client_header_buffer_size 32k;
040  large_client_header_buffers 4 32k;
041  client_max_body_size 300m;
042  client_body_buffer_size 512k;
043
044 # 代理的相关参数设置
045  proxy_connect_timeout 5;
046  proxy_read_timeout 60;
047  proxy_send_timeout 5;
048  proxy_buffer_size 16k;
049  proxy_buffers 4 64k;
050  proxy_busy_buffers_size 128k;
051  proxy_temp_file_write_size 128k;
052
053 # 启用gzip压缩,提高用户访问速度
054  gzip on;
055  gzip_min_length 1k;
056  gzip_buffers 4 16k;
057  gzip_http_version 1.1;
058  gzip_comp_level 2;
059  gzip_types text/plain application/x-javascript text/css application/xml;
060  gzip_vary on;
061
062 # 配置需要代理的tomcat
063 upstream tomcat_proxy{
064 server 199.181.132.250:8080;
065  }
066
067 # 虚拟主机:www.abc.com
068 server {
069  listen 80;
070  server_name abc.com www.abc.com;
071  index index.html index.htm index.jsp;
072  root /home/www/abc/ROOT;
073
074 if (-d $request_filename){
075  rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
076  }
077
078 # 动态页面,交给tomcat处理
079 location ~ \.(jsp|jspx|do|action)?$ {
080  proxy_set_header Host $host;
081  proxy_set_header X-Forwarded-For $remote_addr;
082 proxy_pass http://tomcat_proxy;
083  }
084
085 # 用户浏览器端的缓存设置
086 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
087  expires 10d;
088  }
089
090 location ~ .*\.(js|css)?$ {
091  expires 1h;
092  }
093
094 access_log off;
095  #charset koi8-r;
096  #access_log logs/host.access.log main;
097  }
098
099 # 虚拟主机:www.abd.com
100 server {
101  listen 80;
102  server_name abd.com www.abd.com;
103  index index.html index.htm index.jsp;
104  root /home/www/abd/ROOT;
105
106 if (-d $request_filename){
107  rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
108  }
109
110 location ~ \.(jsp|jspx|do|action)?$ {
111  proxy_redirect off;
112  proxy_set_header Host $host;
113  proxy_set_header X-Forwarded-For $remote_addr;
114  proxy_pass http://tomcat_proxy;
115  }
116
117 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
118  expires 10d;
119  }
120
121 location ~ .*\.(js|css)?$ {
122  expires 1h;
123  }
124
125 access_log off;
126  #charset koi8-r;
127  #access_log logs/host.access.log main;
128  }
129  }

需要注意的地方:root 的值是对应上面Tomcat配置文件中context的docBase值+/ROOT,Tomcat根据server.xml的host的appBase设置,默认访问此appBase的ROOT文件夹里的设置的默认主页,因此我们把项目文件都放在context的docBase的ROOT文件夹中。

注意以上几个细节,那就实现访问各个站点的默认主页了,不再转向Tomcat的主页

 

JSON包


你可能感兴趣的:(nginx,index)