it-swarm.com.de

So richten Sie Spring-Boot ein, um den Zugriff von außerhalb der IP-Adressen auf den Webserver zu ermöglichen

Ich habe untersucht, wie Sie tomact innerhalb von spring-boot einrichten, um den Zugriff von außerhalb der IP-Adressen zu ermöglichen. Derzeit kann ich die Benutzeroberfläche von locahost: port anzeigen, aber ich kann von anderen Systemen nicht darauf zugreifen.

http://localhost:8081 

Wenn ich am lokalen Computer angemeldet bin, funktioniert es.

http://192.168.0.93:8081

Wenn ich am lokalen Computer angemeldet bin und probiere http://192.168.0.93:8081 , funktioniert es nicht. 

Ich möchte von einem anderen Computer aus über seine IP-Adresse auf die Benutzeroberfläche zugreifen, es funktioniert nicht.

http://192.168.0.93:8081

Bei der springs-Dokumentation habe ich festgestellt, dass Sie die IP-Adresse hinzufügen können, unter der Tomcat den Webserver für server.address festlegen soll. Dies sollte dann den Zugriff des Servers über diese IP-Adresse von Fremdsystemen ermöglichen.

server.port=8082
server.address=192.168.0.93

Der Port funktioniert einwandfrei, wenn ich die Adresse nicht angegeben habe, aber wenn ich die Adresse eingebe und versuche, sie auszuführen, stoße ich auf ein Problem für die Bindung an diese Adresse. Es sieht so aus, als hätte spring-boot locahost bereits vergeben: 8082. 

Frage:

Wie kann ich spring-boot richtig einrichten, um auf fremde Adressen auf tomact zugreifen zu können und die eigene IP-Adresse zu erkennen, wenn lokal zugegriffen wird?

Vielen Dank

Stapelverfolgung:

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

Lösung

Siehe die Antwort unten

11
ALM

Seit so vielen Menschen hat sich diese Frage angesehen. Die Lösung bestand darin, sicherzustellen, dass die Firewall auf der Host-CentOS-Maschine ordnungsgemäß konfiguriert wurde und die Serveradresse nicht explizit festgelegt wurde. 

Falsches Setup

Dieses fehlgeschlagen zuvor mit der Firewall falsch eingerichtet

server.port=8081
server.address=192.168.0.93

Wenn die Firewall korrekt eingerichtet ist, Sie müssen nicht die Server-Adresse angeben, sondern nur den Port.

Richtiges Setup

server.port=8081

Dies ermöglichte mir den korrekten Zugriff auf die Anwendung von anderen Systemen über ihre IP.

http://<someip>:<server.port>
http://192.168.0.93:8081
3
ALM

Danke, Sie haben mir Tonnen gespart! Ich wollte dies in Kommentaren posten, aber ich habe nicht genug Ruf, um darauf zu antworten. 

Diejenigen von Ihnen, die Informationen zu Firewall-Änderungen wünschen, 

Ich habe firewalld verwendet, um meine Springboot-Webserver-Ports in meine vm (centos7) aufzunehmen.

Mein Webserver verwendete 8080, also habe ich: 

firewall-cmd --permanent --reload --zone=public --add-port=8080/tcp*

Sudo systemctl restart firewalld*

sie müssen die Firewall neu starten bzw. neu laden, um die Änderungen zu übernehmen. 

Sudo firewall-cmd --list-all*

sie können 8080/tcp zur Anschlussliste hinzugefügt haben

0
Minjeong Choi