Python으로 웹개발 프로젝트를 진행시 개발서버 및 테스크 서버를 구축할 것입니다. 이때 브라우저에서 내부 ip(192.168.xxx.xxx)를 사용하여 접근 가능하도록 설정하였으나 브라우저에서 확인하는 경우 접근이 안되는 에러가 나타날 수 있습니다. 어떻게 해결할 수 있을까요?
# 증상 및 해결방법
먼저 서버를 구동한 후 localhost로 접속하면 잘됩니다. 하지만 이상하게도
내부 ip로 접근할 경우 접속이 안될 수가 있는데 의심할 수 있는 부분이 아래와 같이 두 가지이죠.
1. OS 방화벽 문제(Firewall)
2. Python run() 코드 문제
방화벽에 따른 문제는 OS에서 inbound 설정이 문제일 수 있겠죠. 하지만 방와벽 설정은 정상적으로 방화벽 이슈가 아닌 경우에 python의 run() 코드를 확인해바야 합니다.
# Python application.run() 확인하기
일단 localhost는 접근이 되지만 내부 ip로 접근이 안되므로 이 부분에 에러가 발생했을 가능성이 높습니다. 만약 아래와 같이 코드가 작성된 경우를 예로들 수 있습니다. app.run()에 아무 값도 설정되어 있지 않죠. 이를 실행하면 ip 접근시 동작하지 않을 수 있습니다.
@ 문제가 나타나는 경우if (__name__) == '__main__':
app.run()
이 경우 아래와 같이 run() 내부에 인자로 host값을 아래와 같이 추가합니다.
if (__name__) == '__main__':
app.run(host='0.0.0.0')
이제 다시 서버를 구동해서 브라우저로 접속해보세요. 잘 동작한다면 역시 run() 함수 코드에 이슈가 있었다고 생각할 수 있겠습니다.