即使在转发之后,端口80也会redirect到CPanel的/cgi-sys/defaultwebpage.cgi

我最近接pipe了使用安装了CPanel的纯Tomcat 6服务器(即,没有组合Tomcat + Apache)的网站的pipe理,其仅在端口8088 (即,主页面URL是www.domain.com:8088 )上可访问。 我希望网站可以在www.domain.com上访问,即在80端口上。 按照这篇文章 ,我跑了:

 sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8088 sudo /sbin/service iptables save 

然后重新启动。 但是,与以前一样, www.domain.comredirect到www.domain.com/cgi-sys/defaultwebpage.cgi ,即CPanel的默认网页,位于/usr/local/cpanel/cgi-sys/defaultwebpage.cgi 。 访问www.domain.com任何其他页面时,出现404错误。 看来CPanel正在干扰使用80端口。 www.domain.com:8088仍然有效,但。

这里是/usr/local/tomcat/apache-tomcat-6.0.26/conf/server.xml的内容。 请注意,根据文章,我在port="8088" proxyPort="80"之后添加了proxyPort="80"所以它将“好像传入的请求被引导到端口80”一样。

 <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8088" proxyPort="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" keystoreFile="/usr/local/tomcat/apache-tomcat-6.0.26/.keystore" keystorePass="[redacted]" clientAuth="false" sslProtocol="TLS" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> </Engine> </Service> </Server> 

这里是我的iptables文件的相关部分(通过less /etc/sysconfig/iptables | grep "80" )。 IP地址已被#replace为隐私。

 -A PREROUTING -p tcp -m tcp --sport 80 -j TOS --set-tos 0x08 -A POSTROUTING -p tcp -m tcp --dport 80 -j TOS --set-tos 0x08 -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8088 -j ACCEPT -A acctboth -s ###.###.###.98 -i ! lo -p tcp -m tcp --dport 80 -A acctboth -d ###.###.###.98 -i ! lo -p tcp -m tcp --sport 80 -A acctboth -s ###.###.###.99 -i ! lo -p tcp -m tcp --dport 80 -A acctboth -d ###.###.###.99 -i ! lo -p tcp -m tcp --sport 80 -A acctboth -s ###.###.###.100 -i ! lo -p tcp -m tcp --dport 80 -A acctboth -d ###.###.###.100 -i ! lo -p tcp -m tcp --sport 80 -A acctboth -s ###.###.###.101 -i ! lo -p tcp -m tcp --dport 80 -A acctboth -d ###.###.###.101 -i ! lo -p tcp -m tcp --sport 80 -A acctboth -s ###.###.###.102 -i ! lo -p tcp -m tcp --dport 80 -A acctboth -d ###.###.###.102 -i ! lo -p tcp -m tcp --sport 80 -A acctboth -s ##.###.###.2 -i ! lo -p tcp -m tcp --dport 80 -A acctboth -d ##.###.###.2 -i ! lo -p tcp -m tcp --sport 80 -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8088 

由于操作系统是不是基于Debian的CentOS 5.10, authbind不可用,因此使用它,如在这里的几个答案中所述,不是一个选项。

如何访问80端口上的网站而不被redirect到/cgi-sys/defaultwebpage.cgi


编辑:这是iptables -L -nv | grep 80的结果 iptables -L -nv | grep 80 。 所有带号码的人都去我的网站:

  37 1480 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1433 360 29735 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 1600 92619 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 701 59109 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8088 55 18046 ACCEPT all -- * * 0.0.0.0/0 <IP number 2> 122 8401 tcp -- !lo * ###.###.###.98 0.0.0.0/0 tcp dpt:80 113 56481 tcp -- !lo * 0.0.0.0/0 ###.###.###.98 tcp spt:80 0 0 tcp -- !lo * ###.###.###.99 0.0.0.0/0 tcp dpt:80 2 88 tcp -- !lo * 0.0.0.0/0 ###.###.###.99 tcp spt:80 0 0 tcp -- !lo * ###.###.###.100 0.0.0.0/0 tcp dpt:80 2 88 tcp -- !lo * 0.0.0.0/0 ###.###.###.100 tcp spt:80 0 0 tcp -- !lo * ###.###.###.101 0.0.0.0/0 tcp dpt:80 1 44 tcp -- !lo * 0.0.0.0/0 ###.###.###.101 tcp spt:80 0 0 tcp -- !lo * ###.###.###.102 0.0.0.0/0 tcp dpt:80 0 0 tcp -- !lo * 0.0.0.0/0 ###.###.###.102 tcp spt:80 0 0 tcp -- !lo * <IP number 3> 0.0.0.0/0 tcp dpt:80 0 0 tcp -- !lo * 0.0.0.0/0 <IP number 3> tcp spt:80 

即没有组合的Tomcat + Apache

这是不正确的,因为netstat -anp | grep :80 netstat -anp | grep :80返回:

 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3827/httpd 

如果你想让Tomcat成为你的主要Web服务器,你可以closures它。

然后运行你的iptables预路由规则:

 sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8088 

它应该工作。