복붙노트

[SPRING] 외부 IP 주소에서 웹 서버에 액세스 할 수 있도록 spring-boot를 설정하는 방법

SPRING

외부 IP 주소에서 웹 서버에 액세스 할 수 있도록 spring-boot를 설정하는 방법

나는 spring-boot로 Tomcat을 설정하여 외부 IP 주소로부터의 접근을 허용하는 방법에 대해 조사 해왔다. 현재 localhost : port에서 UI를 볼 수 있지만 다른 시스템에서는이 인터페이스에 액세스 할 수 없습니다.

http://localhost:8081 

로컬 컴퓨터에 로그인 할 때 작동합니다.

http://192.168.0.93:8081

로컬 컴퓨터에 로그인하여 http://192.168.0.93:8081을 시도하면 작동하지 않습니다.

IP 주소를 통해 다른 컴퓨터에서 UI에 액세스하려고합니다. 작동하지 않습니다.

http://192.168.0.93:8081

내가 스프링스 문서에 도착했을 때, tomcat이 server.address를 사용하기 위해 웹 서버를 설정하기를 원하는 IP 주소를 추가 할 수 있음을 발견했다. 그러면 외부 시스템에서이 IP 주소를 통해 서버에 액세스 할 수 있습니다.

server.port=8082
server.address=192.168.0.93

주소를 제공하지 않으면 포트가 제대로 작동하지만 주소를 제공하고 실행하려고하면 해당 주소에 바인딩 할 때 문제가 발생합니다. spring-boot는 이미 locahost : 8082를 할당 한 것처럼 보입니다.

어떻게 외부에서 접근 할 수 있도록 Tomcat을 허용하고 로컬에서 액세스 할 때 자체 IP를 인식 할 수 있도록 spring-boot를 올바르게 설정합니까?

고맙습니다

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

해결책

아래 답변보기

해결법

  1. ==============================

    1.많은 사람들이이 질문을 보았 기 때문에. 해결책은 방화벽이 호스팅 CentOS 컴퓨터에서 올바르게 구성되었는지 확인하고 서버 주소를 명시 적으로 설정하지 않는 것입니다.

    많은 사람들이이 질문을 보았 기 때문에. 해결책은 방화벽이 호스팅 CentOS 컴퓨터에서 올바르게 구성되었는지 확인하고 서버 주소를 명시 적으로 설정하지 않는 것입니다.

    잘못된 설정

    이전에 방화벽을 잘못 설정하여이 작업을 수행하지 못했습니다.

    server.port=8081
    server.address=192.168.0.93
    

    방화벽이 올바르게 설정되면 server.address를 포트로 지정할 필요가 없습니다.

    올바른 설정

    server.port=8081
    

    이것은 내가 ip를 사용하는 다른 시스템에서 응용 프로그램에 올바르게 액세스 할 수있게 해주었습니다.

    http://<someip>:<server.port>
    http://192.168.0.93:8081
    
  2. ==============================

    2.고마워, 너 나 저장 해 줬어! 나는 이것을 코멘트에 게시하고 싶었지만 회신할만한 평판이 없다.

    고마워, 너 나 저장 해 줬어! 나는 이것을 코멘트에 게시하고 싶었지만 회신할만한 평판이 없다.

    방화벽 변경과 관련된 정보를 원하는 분들,

    내 vm (spring 7)에 스프링 부트 웹 서버 포트를 추가하기 위해 firewalld를 사용했습니다.

    내 웹 서버는 8080을 사용하여 다음과 같이했습니다.

    firewall-cmd --permanent --reload --zone=public --add-port=8080/tcp*
    
    sudo systemctl restart firewalld*
    

    변경 사항을 적용하려면 방화벽을 다시 시작하거나 다시로드해야합니다. 만약 너라면,

    sudo firewall-cmd --list-all*
    

    포트 목록에 8080 / tcp가 추가되었음을 알 수 있습니다.

  3. from https://stackoverflow.com/questions/37445626/how-to-setup-spring-boot-to-allow-access-to-the-webserver-from-outside-ip-addres by cc-by-sa and MIT license