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
)만 수신합니다.