1층은 석축이며, 2층은 정면 3칸(12.63m), 측면 2칸(7.96m)의 합각지붕. 목조 단층누각으로 구성되어 있다.
개성 내성(內城)의 남문(南門)으로, 1394년(태조 3)에 처음으로 지었고, 여러 차례 수리하다가 1900년에 크게 고쳐지었으나, 1950년 12월에 불탄 것을 1954년에 다시 복원하였다.
내성은 1393년에 쌓은 석성(石城)으로 둘레가 24리 40보이고, 남대문·동대문·동소문·북대문·북소문·눌리문(訥里門)·진언문(進言門) 등 7개의 문이 있으며, 두 곳에 수구문(水口門)을 설치하였다. 축대는 길쭉하게 다듬은 네모난 화강석으로 정연하게 쌓았으며 그 복판에는 무지개문[虹霓門]을 냈다.
길의 양쪽 밑부분에 댓돌을 놓고 그 위에 부챗돌을 반원형으로 쌓아올렸다. 축대 위에는 숨어서 적을 쏠 수 있게 성가퀴를 돌리고 거기에 여러가지 형태의 쏘는 구멍을 뚫어 놓았으며, 축대 위 네 모서리에는 빗물이 모여서 흘러내릴 수 있는 시설도 해 놓았다.
문루의 기둥은 돌기둥 위에 배흘림기둥을 이어 세웠는데, 밑의 돌기둥은 높이가 1m이다. 기둥 사이는 앞면 가운데칸을 양쪽 칸보다 좀 넓혀 중심부분을 강조하였고, 네 모서리의 기둥들은 다른 기둥들보다 조금 높게 하였으며 약간 안쪽으로 뉘어 기둥에 큰 안쏠림을 주었다.
이 같은 형식은 건물을 안정되게 보이게 하면서도 실제로 건물의 강도를 높여주는 방법으로서 우리나라 목조건물에 예로부터 써내려온 방법의 하나이다. 기둥 위에는 액방(額枋)과 평판방(平板枋)을 얹었으며 평판방의 양쪽 끝을 약간 들어올려 건물이 훨씬 날렵해 보인다.
공포(栱包)는 포식두공으로 첨차를 맞추어 안팎 3포로 짜올렸다. 여기에는 안쪽에 포의 수를 늘려 안도리를 서까래까지 올리는 방식 대신, 안쪽의 장여를 겹으로 하고 그 가운데에 화반(花盤)을 끼우는 방법을 써서 고려 말기 공포의 특징인 검소한 모습을 잘 나타내고 있다.
문루의 널마루는 가운데 한 칸에만 깔고 내부는 통천장으로 하여 안을 시원하게 하였다. 지붕은 용마루·박공마루·추녀마루·지붕면이 모두 아름다운 곡선을 이루었으며, 날아갈 듯 가볍게 쳐든 추녀는 몸체에 어울리게 경쾌한 모습으로 우리 나라 전통건축의 뛰어난 건축미를 보여 주고 있다. 문루에는 모루단청[毛老丹靑 : 머리초에만 칠한 단청]을 입혀서 은근하면서도 무게감을 주고 있다.