使用apache 2.2.15无法访问CentOS 6上的虚拟主机

时间:2016-03-28 22:21:45

标签: php apache centos

我一直在环顾四周,尝试在apache 2.2.15服务器的httpd.conf文件中进行不同的配置,但我找不到解决问题的方法。所以我在这里张贴它以获得一位大师的帮助。

我在CentOS 6.7服务器上的/etc/httpd/conf/httpd.conf上有这个配置。

Listen 80
Listen 8080

<VirtualHost *:8080>
       ServerName example.com       (Corrected after the comment)
       DocumentRoot /var/www/dbgui       
       ErrorLog logs/dbgui-8080-error_log
       <Directory /var/www/dbgui>
              AllowOverride All
       </Directory>
</VirtualHost>

<VirtualHost *:80>
       ServerName example.com
       DocumentRoot /var/www/laravel/public
       ErrorLog logs/example-80-error_log
      <Directory /var/www/laravel>
              AllowOverride All
      </Directory>
</VirtualHost>

当我浏览到http://example.com时,我会看到Laravel页面(正如预期的那样),但当我浏览到http://example.com:8080时,我得到 “连接已超时” < /强>

我已经在IP表上打开了8080的端口

output of netstat -nltup
tcp        0      0 :::8080    :::*    LISTEN      13097/httpd
tcp        0      0 :::80      :::*    LISTEN      13097/httpd

Output of iptables -L -nv
0   0     ACCEPT  tcp  --  *  *  0.0.0.0/0     0.0.0.0/0      tcp dpt:8080
669 41648 ACCEPT  tcp  --  *  *  0.0.0.0/0     0.0.0.0/0      tcp dpt:80

我在日志中看不到任何内容。虽然似乎apache正在侦听端口8080,但没有任何东西可以通过并记录8080端口。

有任何解决此问题的建议吗?

3 个答案:

答案 0 :(得分:0)

该端口不应该是ServerName指令的一部分。

请从ServerName指令中删除端口,如下所示:

<VirtualHost *:8080>
 ServerName example.com 
 DocumentRoot /var/www/dbgui 
 ErrorLog logs/dbgui-8080-error_log     
 <Directory /var/www/dbgui>
  AllowOverride All 
 </Directory> 
</VirtualHost>

请参阅apache.org上的示例for reference

答案 1 :(得分:0)

您应该检查NameVirtualHost param以确保可以从您的IP /端口组合猜测虚拟主机

答案 2 :(得分:0)

谢谢你们的帮助。经过大量的研究和尝试不同的事情,就在扔椅子之前,我终于解决了它。这里是: 确保iptables正确打开tcp / 8080的端口和协议后 接下来,仔细检查VirtualHost设置是否正确,以上设置是否正确。 我做的下一件事是确保selinux不会阻止端口8080,或者将它们全部禁用或将其设置为许可模式。

#semanage port -l | grep http
http_cache_port_t              tcp      3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

可以看出,端口8080列在http_cache_port_t中,现在确保selinux不阻止

#setsebool -P httpd_can_network_memcache 1

然后列出它以确保它设置为“on”或“1”

# getsebool httpd_can_network_memcache

以上命令都没有解决问题,而我正在调查日志/var/log/audit/audit.log和/ var / log / httpd / access_log和/var/log/httpd/error_log我找不到与端口8080有关的任何错误 毕竟,我开始认为它没有意义,因为一切配置正确,但我无法通过。所以我只是看了一下iptables输出:

#iptables -L -nv
0     0  ACCEPT    tcp  --  *     *    0.0.0.0/0   0.0.0.0/0    tcp dpt:8080
25  1316 ACCEPT    tcp  --  *     *    0.0.0.0/0   0.0.0.0/0    tcp dpt:80
24  1240 ACCEPT    tcp  --  *     *    0.0.0.0/0   0.0.0.0/0    tcp dpt:443

其中显示0个数据包和0个字节来自服务器。我找到了这个网站

http://www.yougetsignal.com/tools/open-ports/

显示端口8080被阻止。虽然把椅子放在空中作为最后的手段:),我联系了ISP,我被告知服务器前面有防火墙,端口8080被阻塞,当他们打开它时,我把椅子放下,因为我终于有了访问权限