web-dev-qa-db-fra.com

Exécution du serveur Tomcat sur deux ports différents

Je souhaite déployer un serveur Tomcat de sorte qu'il écoute simultanément sur deux ports (protocole http).

Juste pour vous assurer que vous comprenez correctement cette exigence, nous n’avons qu’une instance de serveur, mais nous souhaitons écouter le protocole HTTP sur deux ports. Par exemple, n'importe qui peut accéder aux applications déployées sur mon serveur en utilisant les numéros de port 7080 et 8080.

Est-il possible de faire ça? Si possible, comment pouvons-nous y parvenir?

45
Narendra

C'est très simple. Vous n'avez qu'à regarder le conf/server.xml fichier de configuration pour ajouter un nouveau connecteur pour le port souhaité. Par exemple, si vous avez un connecteur comme celui-ci:

<Connector port="8080" 
           protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" 
           URIEncoding="UTF-8" />

Ajoutez simplement un nouveau connecteur identique à celui indiqué ci-dessus dans le fichier de configuration, mais en modifiant le paramètre du port. C'est tout. Redémarrez et vous avez terminé.

46

Oui c'est possible. Editez simplement server.xml (situé dans le dossier nommé conf) comme ceci:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8444" />

Ceci configurera Tomcat pour écouter les deux ports 8080 et 8081.

Le documenation indique:

  • port: Numéro de port TCP=) sur lequel ce connecteur créera un socket de serveur et attendra les connexions entrantes. Votre système d'exploitation n'autorisera qu'une seule application serveur. pour écouter un numéro de port particulier sur une adresse IP particulière Si la valeur spéciale de 0 (zéro) est utilisée, Tomcat sélectionne un port libre aléatoire pour ce connecteur, ce qui n’est utile que dans les applications intégrées et de test. .

  • redirectPort: Si ce connecteur prend en charge des requêtes non-SSL et qu'une requête est reçue pour laquelle un <security-constraint> nécessite le transport SSL, Catalina redirigera automatiquement la demande vers le numéro de port spécifié ici.

Ainsi, la modification de redirectPort est facultative, en fonction de la manière dont vous souhaitez qu'une telle redirection fonctionne.

20
Magnilex

Vous pouvez définir 2 services différents dans /conf/server.xml.

L'exemple est comme ci-dessous,

<Service name="Catalina_2">
    <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
    <Engine name="Catalina_2" defaultHost="localhost">
      <Realm className="org.Apache.catalina.realm.LockOutRealm">
        <Realm className="org.Apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps_2" unpackWARs="true" autoDeploy="true">
        <Valve className="org.Apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>


  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.Apache.catalina.realm.LockOutRealm">
        <Realm className="org.Apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.Apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>

Note: Vous avez peut-être eu besoin d'augmenter la taille du tas Tomcat.

17
Vinay Thube

vous pouvez spécifier le code suivant dans votre server.xml

<Service name="sample">

    <Connector port="81" protocol="HTTP/1.1" maxThreads="100" connectionTimeout="2000"/>

    <Engine name="sample" defaultHost="sample">
         <Host name="myhostname" appBase="webapp2">
             <Context docBase="C:\websites\sample\" />
         </Host>
     </Engine>

</Service>
4
sumit sharma

exécuter Tomcat dans un port différent. Nous devons changer quatre choses à l'intérieur du numéro de service du fichier server.xml

  1. nous devons changer de port no. comme 8080 à 80
  2. nous devons changer redirectPort pas comme 8443 à 8444
  3. nous devons changer le nom du moteur comme Catalina en Catalina_2
  4. nous devons changer le nom de appBase, comme webapps, en webapps_1
3
Tejpratap

Assurez-vous sur quel utilisateur vous exécutez Tomcat, car si vous souhaitez l’utiliser sur n’importe quel port privilégié, vous devez l’utiliser sous l’utilisateur root.

Une autre chose que vous pouvez faire est de rediriger le port 80 vers 8080 avec iptables. Quelque chose comme ça:

iptables -t nat -A PREROUTING -d 192.168.10.16 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

J'espère que ça aide

3
Cyberzoo