阿拉做实验的时候在CentOS7上配置LAMT正确,在CentOS6.9上却总是显示500错误。二者配置文件除主机名外一模一样。配置文件如下:
<VirtualHost *:80>
ServerName cet7.magedu.com
DocumentRoot /usr/local/tomcat/webapps/ROOT
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
查看CentOS76.9的错误日志则有如下信息:
[Sat Nov 25 10:59:25 2017] [crit] [client 172.17.200.216] configuration error: couldn't perform authentication. AuthType not set!: /
[Sat Nov 25 10:59:25 2017] [crit] [client 172.17.200.216] configuration error: couldn't perform authentication. AuthType not set!: /favicon.ico, referer: http://172.17.6.6/
阿拉开始认准了是模块加载的错,然而主配置文件改了又改,日志里的报错却始终不变。哎,真是,只有问题解决后,才意识到自己的思路跑的多偏。
couldn't perform authentication. AuthType not set!的意思是————无法执行身份验证。AuthType没有设置。
后来模块加载上阿拉实在不知道还能怎么改动了。才开始谨慎研究报错信息。排错时期的干扰因素总结如下:
- CentOS6.9使用httpd -M显示的模块比CentOS7.3少的多,然而二者配置文件里模块加载的部分差别并不大。且Centos6.9使用httpd -M死活不显示proxy_http_module及proxy_ajp_module等模块。
- 虽然启动的是用yum安装的httpd,但阿拉的CentOS6.9上还编译安装了httpd-2.4.28,httpd -v显示的是‘Apache/2.4.28’,yum info httpd则显示‘Version : 2.2.15’。阿拉直到最后才发现httpd -v显示的版本不是当前服务所使用的httpd的版本。百度有人说版本差异注释掉Require all granted会解决500错误。当时阿拉在并未意识到自己的版本差的情况下有病乱投医的试了,然并卵,没起到丝毫作用。
- 配置文件里关于/的设置。报错有提到这个,阿拉理所当然的在上面浪费了大量时间。
最后要说的是在这些干扰存在的情况下,阿拉看到知乎上有说给虚拟主机的根目录加了个 Satisfy Any,然后阿拉就试了。配置好的文件如下:
[root@cet6 httpd]# cat conf.d/http-tomcat.conf
<VirtualHost *:80>
ServerName cet6.magedu.com
DocumentRoot /usr/local/tomcat/webapps/ROOT
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
<Location />
Satisfy Any
Require all granted
</Location>
</VirtualHost>
这个配置chrome相当给情面的弹出了tomcat的小黄喵来,不过此时,阿拉已经没有一身轻松的惬意了,不如说,阿拉很愤怒。
在开始排错的时候,阿拉就知道是httpd不能正确解析.jsp的主页面,然而这问题并没有引起阿拉足够的重视。结果兜兜转转也不过如此。
不及格啊,这职业素养。
又被自己气的不想吃饭了!
本文转自阿拉杜美美51CTO博客,原文链接: http://blog.51cto.com/amelie/2044149,如需转载请自行联系原作者