Ubuntu 서버의 공개 IP를 사용하여 브라우저에서 Rails에 액세스할 수 없습니다.

Ubuntu 서버의 공개 IP를 사용하여 브라우저에서 Rails에 액세스할 수 없습니다.

Ubuntu 16.04.1 LTS(GNU/Linux 4.4.0-63-generic x86_64) 서버가 있고 공용 IP는 183.xx.xxx.xx(curl -4 icanhazip.com)와 같습니다. 다음 명령을 사용하여 Rails 애플리케이션을 시작했습니다.

rails s -b0.0.0.0 -p3002

푸마 서버가 성공적으로 시작되었습니다

    => Booting Puma
    => Rails 5.0.3 application starting in development on http://localhost:3002
    => Run `rails server -h` for more startup options
    Puma starting in single mode...
    * Version 3.9.1 (ruby 2.4.0-p0), codename: Private Caller
    * Min threads: 5, max threads: 5
    * Environment: development
    * Listening on tcp://0.0.0.0:3002
    Use Ctrl-C to stop

다음을 사용하여 브라우저에서 내 애플리케이션에 액세스하려고 합니다.

 http://183.xx.xxx.xx:3002

나는 들어가고있다 (상태

This site can’t be reached
172.xx.xxx.xx took too long to respond.
ERR_CONNECTION_TIMED_OUT    

어떤 도움이라도 대단히 감사하겠습니다. 미리 감사드립니다!

편집 1

netstat -plnt

    tcp        0      0 0.0.0.0:45109           0.0.0.0:*               LISTEN      -
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -
    tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -
    tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN      25689/0.0.0.0:3002)
    tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -

프로세스가 pid 25689로 실행 중입니다.

답변1

먼저 iptables를 확인해보겠습니다. ou를 실행하면 iptables -L다음과 유사한 내용이 표시됩니다.

ACCEPT     tcp  --  anywhere    anywhere   tcp dpt:3002 ctstate NEW

이는 방화벽이 해당 포트에 대한 연결을 허용한다는 의미입니다. 그렇지 않은 경우 다음을 사용하여 포트에 액세스하는 규칙을 추가해 보세요.

sudo iptables -A INPUT -p tcp --dport 3002 -j ACCEPT

답변2

브라우저가 서버와 동일한 컴퓨터에 있다고 가정하면 다음 URL을 사용하는 것이 좋습니다.

http://127.0.0.1:3002

자신의 공용 IP에 액세스하는 것은 상당히 복잡한 라우팅에 의존하는 경우가 많기 때문에 문제가 되는 경우가 많습니다. 동일한 컴퓨터에 있는 서버에 연결하는 표준 방법의 127.0.0.1또 다른 이름입니다 .localhost

때때로 서버는 도메인 이름을 통해 액세스할 수 있기를 원합니다. 이것은 문제가 되지 않는 것처럼 보이지만 이 방법을 사용하는 경우 파일에 다음 줄을 추가하면 됩니다 /etc/hosts.

127.0.0.1 your.public.domain.name

마지막으로, netstat 테이블의 모양이 혼동스러우면 0.0.0.0테이블에 인터페이스 서버가 무엇인지 나열되어 있음을 참고하세요.듣다존재하다. 일부 서버가 듣고 있습니다.모두인터페이스( 0.0.0.0), 다른 인터페이스는 로컬 인터페이스( 127.0.0.1)만 수신합니다.

관련 정보