![Ubuntu 서버의 공개 IP를 사용하여 브라우저에서 Rails에 액세스할 수 없습니다.](https://linux55.com/image/113554/Ubuntu%20%EC%84%9C%EB%B2%84%EC%9D%98%20%EA%B3%B5%EA%B0%9C%20IP%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90%EC%84%9C%20Rails%EC%97%90%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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
)만 수신합니다.