Flask에는 포트 전달 문제가 있지만 express.js에는 없습니다.

Flask에는 포트 전달 문제가 있지만 express.js에는 없습니다.

여러 서비스가 포함된 로컬로 실행되는 서버(Arch Linux)가 있고 다른 포트에서 실행되는 새로운 Python 서비스(Flask)를 추가하고 싶습니다. 로컬에서는 서버가 실행 중이며 192.168.x.x현재 서버에서 실행 중인 모든 서비스에 이미 액세스할 수 있습니다. 포트에서 Flask 서버를 시작했지만 5000노트북에서 nmap을 실행하면 포트가 여전히 닫혀 있는 것으로 표시됩니다.

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5432/tcp open  postgresql

그러나 서버의 로컬 호스트에는 포트가 열려 있습니다.

myserver~$ nmap localhost

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

나는 이것이 iptables에 대한 일종의 문제라고 생각했지만(나는 이것에 대해 잘 알지 못합니다), 3000포트에서 express.js 서버를 실행하려고 시도했고(이미 포트에서 실행 중인 서버가 있었습니다) 5000충분히 작동했습니다.

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

Flask 서버를 어떻게 전달해야 할지 아직 잘 모르겠고, 왜 ssh, express.js, postgres 서비스가 기본적으로 전달되는지 궁금합니다. 도움을 주시면 감사하겠습니다!

답변1

HTTP 서버에 내장된 Flask를 사용한다고 가정하면 다음에서 작동합니다.플라스크 문서(외부에서 볼 수 있는 서버까지 아래로 스크롤):

서버를 실행하면 네트워크의 다른 컴퓨터가 아닌 자신의 컴퓨터에서만 서버에 액세스할 수 있다는 것을 알 수 있습니다. 디버그 모드에서는 애플리케이션 사용자가 컴퓨터에서 임의의 Python 코드를 실행할 수 있기 때문에 이것이 기본 설정입니다.

디버거를 비활성화했거나 네트워크의 사용자를 신뢰하는 경우 명령줄에 --host=0.0.0.0을 추가하면 서버를 공개적으로 사용할 수 있습니다.

플라스크 실행 --host=0.0.0.0

이는 운영 체제가 모든 공용 IP를 수신하도록 지시합니다.

nmap컴퓨터의 출력에는 myserver포트 5000이 열려 있는 것으로 표시됩니다. 를 사용했기 때문에 nmap localhost로컬 호스트에서 192.168.xx가 아닌 127.0.0.1의 열린 포트를 검색합니다.

관련 정보