tomcat read correct request server name behand apache

解决Apache代理下Tomcat无法获取正确服务器名的问题
文章详细介绍了如何通过设置Apache配置项proxyPreserveHost为on来解决Tomcat部署在Apache后端时,仅能读取到localhost作为服务器名的问题。提供了深入的解释和实践步骤。

I need read requested server name in jsp (tomcat container), because tomcat is behind apache, and apache use proxypass, so the tomcat can only read request.getServerName() got 'localhost'.

 

We can pass correct hostname by setting apache configuration: proxyPreserveHost on.

 

more infomation see: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost

我说的”空行“是类似于: root@ER706W-4G:/tmp/log# cat systemlog 2025-11-19 00:00:04 logger<5>: [OMADA]The LAN(LAN) IP address/mask of 192.168.0.155 were changed to 192.168.0.1/255.255.255.0. 2025-11-19 00:00:08 dhcp_server<6>: [OMADA]DHCPS initialization succeeded. 2025-11-19 00:00:20 dhcp_server<6>: [OMADA]DHCPS initialization succeeded. 2025-11-19 00:00:23 logger<5>: [OMADA]The LAN(LAN) IP address/mask of 192.168.0.155 were changed to 192.168.0.1/255.255.255.0. 2025-11-19 00:00:46 switch<5>: 55: The physical connection status of [WAN6] was up. 2025-11-19 00:00:48 dhcp_client<5>: [OMADA]WAN1: DHCP client sending DHCP-DISCOVERY timeout. 2025-11-19 00:00:48 dhcp_client<5>: 55 failed to obtain the IP address for WAN1 because no response from the server. 2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN255: The online detection result of [WAN2] was offline. 2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN255: The online detection result of [WAN2] was offline. 2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN755: The online detection result of [WAN7] was offline. 2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN755: The online detection result of [WAN7] was offline. 2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN155: The online detection result of [WAN1] was offline. 2025-11-19 00:01:08 online_dection<5>: [OMADA][MARK]WAN155: The online detection result of [WAN1] was offline. 2025-11-19 00:02:17 sntp<4>: Time renew failed, connecting NTP server timeout. root@ER706W-4G:/tmp/log# 这个里面的空行的情况,好像现在用宏也会炸!!void loggerk_reg(unsigned int module_id, unsigned int info_id, ...) { syslog(0,"!!!in loggerk_reg!!!.\n"); char buf[_LOG_BUF_MAX_SIZE]; char *msg = buf; int rlen = _LOG_BUF_MAX_SIZE; int len; va_list args; unsigned int fmt; unsigned int pid; #ifdef __KERNEL__ /*printk("%s,%d:module_id:%d,info_id:%d\n",__FUNCTION__,__LINE__,module_id,info_id);*/ pid = 0; #else pid = getpid(); #endif len = snprintf(msg, rlen, _LOG_TP_IDENT "%u,%u[%u]: ", module_id, info_id, pid); #ifdef __KERNEL__ /*printk("%s,%d:rlen:%d,len:%d\n",__FUNCTION__,__LINE__,rlen,len);*/ #endif if (len < 0 || len >= rlen) { syslog(0,"!!!in loggerk_reg,rlen.\n"); return; } msg += len; rlen -= len; va_start(args, info_id); #define _XPRINTF(fmt, ...) \ do { \ len = snprintf(msg, rlen, fmt _ARGS_SEP_STR, \ ##__VA_ARGS__); \ if (len < 0 || len >= rlen) \ { \ return; \ } \ msg += len; \ rlen -= len; \ } while (0) syslog(0,"!!!in loggerk_reg,behand for!!!.\n"); for (fmt = va_arg(args, unsigned int); fmt != LP_END; fmt = va_arg(args, unsigned int)) { switch (fmt) { case LP_STRING: _XPRINTF("%s", va_arg(args, char *)); syslog(0,"!!!in loggerk_reg,in LP_STRING.\n"); break; case LP_INT32: _XPRINTF("%d", va_arg(args, int)); break; case LP_UINT32: _XPRINTF("%u", va_arg(args, unsigned int)); break; case LP_UINT32HEX: _XPRINTF("%x", va_arg(args, unsigned int)); break; case LP_IPV4: { unsigned int ipv4 = va_arg(args, unsigned int); _XPRINTF("%d.%d.%d.%d", (ipv4 >> 24) & 0xFF, (ipv4 >> 16) & 0xFF, (ipv4 >> 8) & 0xFF, (ipv4 >> 0) & 0xFF); } break; case LP_MARK: _XPRINTF("%s%s", _LOG_OMADA_MARK_HEAD, va_arg(args, char *)); break; case LP_INTERVAL: _XPRINTF("%s%d", _LOG_OMADA_INTERVAL_HEAD, va_arg(args, unsigned int)); break; default: syslog(0,"!!!in loggerk_reg,defult.\n"); return; } } syslog(0,"!!!in loggerk_reg,fmt is%s.\n", msg); msg[-1] = '\0'; va_end(args); #ifdef __KERNEL__ printk(KERN_DEFAULT "%s\n", buf); #else syslog(0, "%s\n", buf); #endif }我往loggerk_reg里加了点打印, syslog(0,"!!!in loggerk_reg,fmt is%s.\n", msg);这行没有输出
11-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值