您的位置:首页 > 运维架构 > Tomcat

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

2017-04-18 08:13 218 查看
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;[/code]
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;[/code]
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的主页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: