Configuration de spring-boot pour permettre l'accès au serveur web à partir de l'extérieur des adresses IP
J'ai été regarder dans la configuration de tomcat
dans spring-boot
pour permettre l'accès depuis d'autres adresses IP. Actuellement, je peux afficher l'INTERFACE utilisateur de locahost:port mais je ne peux pas y accéder à partir d'autres systèmes.
http://localhost:8081
Quand je suis connecté à l'ordinateur local il fonctionne.
http://192.168.0.93:8081
Quand je suis connecté à l'ordinateur local et essayer http://192.168.0.93:8081 il ne fonctionne pas.
Je veux accéder à l'INTERFACE utilisateur à partir d'un autre ordinateur par son adresse IP, il ne fonctionne pas.
http://192.168.0.93:8081
Quand je suis arrivé à springs
la documentation que j'ai trouvé vous pouvez ajouter l'adresse IP sur laquelle vous souhaitez tomcat pour configurer le serveur web pour l'utilisation du serveur.adresse. Ceci devrait alors permettre au serveur accessible via cette adresse IP par des systèmes extérieurs.
server.port=8082
server.address=192.168.0.93
Le port fonctionne très bien si je ne fournissez pas l'adresse mais quand je fournir l'adresse et essayez de le lancer j'ai une question pour la liaison à cette adresse. Il ressemble à spring-boot
a déjà affecté locahost:8082.
Question:
Comment puis-je correctement le programme d'installation spring-boot
pour permettre tomact pour être accessible par l'extérieur adresses et reconnaître ses propres droits de propriété intellectuelle lors de l'accès au niveau local?
Merci
Trace De La Pile:
java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:340)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:986)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:239)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180)
at com.miw.mcb.server.ReactAndSpringDataRestApplication.main(ReactAndSpringDataRestApplication.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478)
at java.lang.Thread.run(Thread.java:745)
2016-05-25 11:24:30 - Failed to start connector [Connector[HTTP/1.1-8081]]
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-8081]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:239)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180)
at com.miw.mcb.server.ReactAndSpringDataRestApplication.main(ReactAndSpringDataRestApplication.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: service.getName(): "Tomcat"; Protocol handler start failed
at org.apache.catalina.connector.Connector.startInternal(Connector.java:993)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
... 19 common frames omitted
Caused by: java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:340)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:986)
... 20 common frames omitted
2016-05-25 11:24:30 - Pausing ProtocolHandler ["http-nio-192.168.0.93-8081"]
2016-05-25 11:24:30 - Stopping service Tomcat
2016-05-25 11:24:30 - The stop() method was called on component [StandardServer[-1]] after stop() had already been called. The second call will be ignored.
2016-05-25 11:24:30 - Stopping ProtocolHandler ["http-nio-192.168.0.93-8081"]
2016-05-25 11:24:30 - Destroying ProtocolHandler ["http-nio-192.168.0.93-8081"]
2016-05-25 11:24:30 - Application startup failed
org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat servlet container
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:165)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180)
at com.miw.mcb.server.ReactAndSpringDataRestApplication.main(ReactAndSpringDataRestApplication.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Tomcat connector in failed state
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:159)
... 16 common frames omitted
Solution
Voir la réponse ci-dessous
J'ai le programme d'installation de la SCRO pour nos services web REST suivant celle de guide lors de la communication d'un serveur web à l'autre. Qui fonctionne sans problème, mais c'est de la communication via localhost:DIFF_PORTS. La question je crois, est de permettre différentes adresses IP pour accéder à l'INTERFACE utilisateur à partir d'un autre système qui, je crois, est dans tomcat. J'ai pensé que j'ai lu que si vous ne spécifiez pas le serveur.adresse il va se lier à 0.0.0.0
désolé, je suppose que j'ai mal compris. J'ai pensé que vous étiez en train d'accéder à l'application à partir d'un ordinateur distant par l'introduction de l'IP de l'ordinateur distant. Je pense que vous avez raison de ne pas spécifier une adresse IP, il sera par défaut localhost, mais qui devraient toujours inclure l'adresse IP locale de la machine hôte.
J'ai ajouté un peu plus de détails sur la question
Je doute que le printemps de démarrage a déjà attribué l'adresse. Si elle le faisait, je pense que ça pourrait vous donner un plus explicite exception, en disant quelque chose comme "adresse déjà en cours d'utilisation." Si c'était le cas, vous pourriez tuer le processus ou redémarrez le système et essayez de nouveau. Je serais demandais si c'était un réseau de chose à ce point, et si certaines plages de ports sont bloqués. Peut-être tour de votre pare-feu si vous le pouvez et voir ce qui se passe. Sur mon application, j'ai mis rien, et je peux accéder à l'application par adresse IP ou nom de domaine affecté par l'équipe réseau.
OriginalL'auteur ALM | 2016-05-25
Vous devez vous connecter pour publier un commentaire.
Depuis de si nombreuses personnes ont consulté cette question. La résolution est de vous assurer que le pare-feu est correctement configuré sur l'hébergement CentOS machine et de ne pas définir l'adresse du serveur de manière explicite.
INCORRECTE DE L'INSTALLATION
Ce échoué précédemment avec le pare-feu de manière incorrecte installation
Une fois le pare-feu est correctement configurée vous n'avez pas besoin de spécifier le serveur.adresse juste le port.
D'INSTALLATION CORRECTE
Cela m'a permis d'accéder à l'application correctement à partir d'autres systèmes à l'aide de son adresse ip.
Les modifications sont présentées ci-dessus, avez-vous essayer?
oui j'ai mis le serveur.port et le serveur.adresse, mais sa ne fonctionne pas. J'ai aussi ouvert le port 8080 encore il affiche l'erreur 404.
Comme mentionné ci-dessus une fois que je peux configurer le pare-feu correctement j'ai enlevé le "server.adresse et seulement utilisé le serveur".port" et il a fonctionné correctement.
merci pour votre réponse. Pourriez-vous donner des précisions sur la configuration du pare-feu que vous avez fait? J'ai ouvert le port 8080. Dois-je faire autre chose que cela?
OriginalL'auteur ALM
Merci, tu me sauve des tonnes!
Je voulais poster ce, dans les commentaires, mais je n'ai pas assez de réputation pour vous répondre.
Ceux d'entre vous qui souhaitent recevoir l'information concernant les changements de pare-feu,
J'ai utilisé firewalld pour ajouter mon springboot serveur de ports dans ma vm(centos7)
De mon serveur a l'aide de 8080, j'ai donc fait:
vous devez redémarrer/recharger le firewalld pour appliquer les modifications.
si vous,
vous pouvez trouver
8080/tcp
a été ajouté à la liste des portsOriginalL'auteur Minjeong Choi