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

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

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

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

<Engine name="Catalina" defaultHost="www.abc.com">
	<Host name="www.abc.com" appBase="/home/www/abc" unpackWARs="true" autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false">
		<contextpath="" docBase="/home/www/abc" debug="0" reloadable="true"></context>
	</Host>
	<Host name="www.abd.com" appBase="/home/www/abd" unpackWARs="true" autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false">
		<contextpath="" docBase="/home/www/abd" debug="0" reloadable="true"></context>
	</Host>
</Engine>

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

 

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

	user www;
	
	# 根据你服务器的cpu核数来确定此值
	worker_processes 2;
	
	error_log logs/error.log crit;
	#error_log logs/error.log notice;
	#error_log logs/error.log info;
	
	#pid logs/nginx.pid;
	
	worker_rlimit_nofile 65535;
	
	# events事件主要用来确定Nginx使用哪种算法
	events {
	 use epoll;
	 worker_connections 65535;
	}
	
	http {
		 include mime.types;
		 default_type application/octet-stream;
		
		 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
		 # '$status $body_bytes_sent "$http_referer" '
		 # '"$http_user_agent" "$http_x_forwarded_for"';
		
		# 由于Nginx用于代理Tomcat,所以记录访问日志的事情交给Tomcat来做好了,注释掉
		#access_log logs/access.log main;
		
		sendfile on;
		 tcp_nopush on;
		 tcp_nodelay on;
		
		#keepalive_timeout 0;
		 keepalive_timeout 65;
		
		server_names_hash_bucket_size 128;
		 client_header_buffer_size 32k;
		 large_client_header_buffers 4 32k;
		 client_max_body_size 300m;
		 client_body_buffer_size 512k;
		
		# 代理的相关参数设置
		 proxy_connect_timeout 5;
		 proxy_read_timeout 60;
		 proxy_send_timeout 5;
		 proxy_buffer_size 16k;
		 proxy_buffers 4 64k;
		 proxy_busy_buffers_size 128k;
		 proxy_temp_file_write_size 128k;
		
		# 启用gzip压缩,提高用户访问速度
		 gzipon;
		 gzip_min_length 1k;
		 gzip_buffers 4 16k;
		 gzip_http_version 1.1;
		 gzip_comp_level 2;
		 gzip_types text/plain application/x-javascript text/css application/xml;
		 gzip_vary on;
	
		# 配置需要代理的tomcat
		upstream tomcat_proxy{
			server 199.181.132.250:8080;
		}
	
		# 虚拟主机:www.abc.com
		server {
		 listen 80;
		 server_name abc.com www.abc.com;
		 index index.html index.htm index.jsp;
		 root /home/www/abc/ROOT;
		
		if (-d $request_filename){
		 rewrite ^/(.*)([^/])$http://$host/$1$2/ permanent;
		 }
		
		# 动态页面,交给tomcat处理
		location ~ \.(jsp|jspx|do|action)?$ {
		 proxy_set_header Host $host;
		 proxy_set_header X-Forwarded-For $remote_addr;
		proxy_pass http://tomcat_proxy;
		 }
		
		# 用户浏览器端的缓存设置
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
		 expires 10d;
		 }
		
		location ~ .*\.(js|css)?$ {
		 expires 1h;
		 }
		
		access_log off;
		 #charset koi8-r;
		 #access_log logs/host.access.log main;
		 }
	
		# 虚拟主机:www.abd.com
		server {
		 listen 80;
		 server_name abd.com www.abd.com;
		 index index.html index.htm index.jsp;
		 root /home/www/abd/ROOT;
		
		if (-d $request_filename){
		 rewrite ^/(.*)([^/])$http://$host/$1$2/ permanent;
		 }
		
		location ~ \.(jsp|jspx|do|action)?$ {
		 proxy_redirect off;
		 proxy_set_header Host $host;
		 proxy_set_header X-Forwarded-For $remote_addr;
		 proxy_pass http://tomcat_proxy;
		 }
		
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
		 expires 10d;
		 }
		
		location ~ .*\.(js|css)?$ {
		 expires 1h;
		 }
		
		access_log off;
		 #charset koi8-r;
		 #access_log logs/host.access.log main;
		}
	}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值