2016-05-25 42 views
5

spring-bootの中でtomactを設定して外部IPアドレスからのアクセスを許可する方法を検討しました。現在私はlocahost:portからUIを見ることができますが、他のシステムからはアクセスできません。外部IPアドレスからWebサーバーにアクセスできるようにspring-bootを設定する方法

http://localhost:8081 

私はローカルコンピュータにログインしています。

http://192.168.0.93:8081 

私がローカルコンピュータにログインしていて、http://192.168.0.93:8081を試しても動作しません。

別のコンピュータからそのIPアドレスを使用してUIにアクセスしたいのですが、動作しません。私はあなたがTomcatがserver.addressを使用するためのウェブサーバを設定したいIPアドレスを追加することができたspringsドキュメントに着い

http://192.168.0.93:8081 

。これにより、外部システムからこのIPアドレスを介してサーバーにアクセスできるようになります。私はアドレスを指定していないが、私はアドレスを供給し、それを実行しようとすると、私はそのアドレスに結合するための問題に実行する場合、

server.port=8082 
server.address=192.168.0.93 

ポートが正常に動作します。既にspring-bootにlocahost:8082が割り当てられているようです。

質問:

どのように正しくセットアップspring-boot tomactは、外部のアドレスでアクセスすることを可能にすると、ローカルにアクセスする際、独自のIPを認識するのですか?

ありがとう

スタックトレース:

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 

ソリューション

ので、多くの人がこの質問を見てきたので

+0

あなたがCORS上に読んでもらいたいと考えてください。また、私はあなたがやっていることは、アプリケーションにターゲットIPを実行するように伝えようとしていると信じています。 – mugua

+0

@mugua私は、1つのWebサーバーから別のWebサーバーに通信する際に、このガイドに従ってREST WebサービスのCORSを設定します。これは問題なく動作しますが、localhost:DIFF_PORTSを介して通信しています。私が信じている問題は、別のIPアドレスが別のシステムからUIにアクセスすることを許可していることです。私はあなたがserver.addressを指定しないと、それが0.0.0.0にバインドされると思った。 – ALM

+0

申し訳ありませんが、誤解されていると思います。リモートコンピュータのIPを入力して、リモートコンピュータからアプリケーションにアクセスしようとしていると思いました。 IPを指定しないと、デフォルトでlocalhostになりますが、それにはまだホストマシンのローカルIPが含まれているはずです。 – mugua

答えて

4

以下の回答を参照してください。解決策は、ファイアウォールがホスティングCentOSマシン上で正しく構成されていることを確認し、サーバーアドレスを明示的に設定しないことでした。

INCORRECT SETUP

このは、ファイアウォールが正しく設定したら、ファイアウォールと以前に間違って設定

server.port=8081 
server.address=192.168.0.93 

を失敗したあなただけのポートserver.addressを指定する必要はありません

正しいセットアップ

server.port=8081 

これは私がそのIPを使用して他のシステムから正しくアプリケーションにアクセスすることができました。https://spring.io/guides/gs/rest-service-cors/ -

http://<someip>:<server.port> 
http://192.168.0.93:8081 
+0

のローカルマシンでもアクセスできません。ファイアウォールを変更しましたか?私は同様の問題に直面している。 – Harsh

+0

@Harsh変更は上に示されています、それらを試しましたか? – ALM

+0

はい私はserver.portとserver.addressを設定しましたが、動作しません。私は8080ポートをオープンしていますが、まだ404エラーを示しています。 – Harsh

関連する問題