Назад | Перейти на главную страницу

Порт 80 перенаправляет на /cgi-sys/defaultwebpage.cgi CPanel даже после перенаправления.

Недавно я взял на себя управление веб-сайтом, используя чистый сервер 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

т.е. нет комбинации Tomcat + Apache

Это неправда, потому что netstat -anp | grep :80 вернулся:

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

Вы можете выключить его, если хотите Tomcat быть вашим основным веб-сервером.

Затем запустите правило предварительной маршрутизации iptables:

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

И это должно работать.