Nginx+Tomcat多站点访问默认tomcat主页问题

来源:互联网 发布:seo 专家 顺丰 编辑:程序博客网 时间:2024/05/30 23:07

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

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

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

01<Enginename="Catalina"defaultHost="www.abc.com">
02  <Hostname="www.abc.com" appBase="/home/www/abc"
03            unpackWARs="true"autoDeploy="true"
04            xmlValidation="false"xmlNamespaceAware="false">
05    <contextpath=""docBase="/home/www/abc"debug="0"reloadable="true"></context>
06  </Host>
07  <Hostname="www.abd.com" appBase="/home/www/abd"
08            unpackWARs="true"autoDeploy="true"
09            xmlValidation="false"xmlNamespaceAware="false">
10    <contextpath=""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的配置:

001user www;
002 
003# 根据你服务器的cpu核数来确定此值
004worker_processes 2;
005 
006error_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 
012worker_rlimit_nofile 65535;
013 
014# events事件主要用来确定Nginx使用哪种算法
015events {
016 use epoll;
017 worker_connections 65535;
018 }
019 
020http {
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 
031sendfile on;
032 tcp_nopush on;
033 tcp_nodelay on;
034 
035#keepalive_timeout 0;
036 keepalive_timeout 65;
037 
038server_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 gzipon;
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
063upstream tomcat_proxy{
064server 199.181.132.250:8080;
065 }
066 
067# 虚拟主机:www.abc.com
068server {
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 
074if (-d $request_filename){
075 rewrite ^/(.*)([^/])$http://$host/$1$2/ permanent;
076 }
077 
078# 动态页面,交给tomcat处理
079location ~ \.(jsp|jspx|do|action)?$ {
080 proxy_set_header Host $host;
081 proxy_set_header X-Forwarded-For $remote_addr;
082proxy_pass http://tomcat_proxy;
083 }
084 
085# 用户浏览器端的缓存设置
086location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
087 expires 10d;
088 }
089 
090location ~ .*\.(js|css)?$ {
091 expires 1h;
092 }
093 
094access_log off;
095 #charset koi8-r;
096 #access_log logs/host.access.log main;
097 }
098 
099# 虚拟主机:www.abd.com
100server {
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 
106if (-d $request_filename){
107 rewrite ^/(.*)([^/])$http://$host/$1$2/ permanent;
108 }
109 
110location ~ \.(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 
117location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
118 expires 10d;
119 }
120 
121location ~ .*\.(js|css)?$ {
122 expires 1h;
123 }
124 
125access_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的主页

0 0
原创粉丝点击