我最近接管了一个网站,该网站使用纯 Tomcat 6 服务器(即没有 Tomcat+Apache 组合),安装了 CPanel,只能在端口 上访问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.com
重定向到www.domain.com/cgi-sys/defaultwebpage.cgi
CPanel 的默认网页,位于/usr/local/cpanel/cgi-sys/defaultwebpage.cgi
。访问 上的任何其他页面时,我都会收到 404 错误www.domain.com
。似乎 CPanel 干扰了端口 的使用80
。 www.domain.com:8088
但是,它仍然有效。
以下是 的内容/usr/local/tomcat/apache-tomcat-6.0.26/conf/server.xml
。请注意,我添加了proxyPort="80"
以下内容port="8088"
,以便它“表现得好像传入的请求被定向到端口 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 地址已被替换为。#
-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
由于操作系统是 CentOS 5.10,不是基于 Debian,authbind
因此无法使用它,如几个答案中所述这里,不是一个选项。
我如何才能访问端口上的网站80
而不被重定向到/cgi-sys/defaultwebpage.cgi
?
编辑:这是 的结果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
答案1
即没有组合 Tomcat+Apache
事实并非如此,因为netstat -anp | grep :80
返回:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3827/httpd
Tomcat
如果您想将其作为主 Web 服务器,可以将其关闭。
然后运行你的 iptables 预路由规则:
sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8088
而且它应该可以工作。