본관은 능성(綾城). 자는 중경(重卿). 참찬 구사맹(具思孟)의 증손으로, 할아버지는 구굉(具宏)이고, 아버지는 판서 구인기(具仁墍)이며, 어머니는 부사과(副司果) 민헌(閔憲)의 딸이다.
1642년(인조 20) 진사가 되고, 1644년 세마(洗馬)를 거쳐, 1646년 공신의 적장자(嫡長子)라는 이유로 품계가 올라 와서별제(瓦署別提)가 되었다.
1656년(효종 7) 금부도사가 되고, 1658년에 횡성현감으로 나가 묵은 땅을 개간하는 등 치적이 있어 송덕비가 세워졌다. 1664년(현종 5) 남평현감을 거쳐, 1667년에 사재감첨정(司宰監僉正)이 되었다. 1668년 무과 별시에 급제해 도총부경력(都摠府經歷)·훈련원부정을 역임하고 이듬 해 홍양영장(洪陽營將)이 되었다. 이 때 아버지의 병이 위독해 왕의 특령으로 해직을 허락받았다.
1670년에 장단부사가 되고 얼마 뒤 황해도병마절도사를 거쳐, 1672년에 경기수군절도사가 되었으나 병으로 그만두었다. 1674년 금군별장(禁軍別將)을 거쳐 1675년에 한성부우윤으로 승진되고 총관(摠管)이 포도대장을 겸하였다.
1678년(숙종 4) 능평군(綾平君)으로 봉해지고, 이듬 해 당시 영의정 허적(許積)의 아들 허견(許堅)이 세력을 믿고 양가의 부녀를 겁간한 일이 있자, 그 죄를 다스리다가 오히려 무고(誣告)를 입어 김해에 유배되었다.
1680년 특별히 한성부판윤 겸 총융사(摠戎使)에 임명되고, 1688년 지돈녕부사(知敦寧府事)가 되었다. 1689년 기사환국으로 대간의 탄핵을 받아 삭직당해 송추에서 은거하였다. 1694년 갑술환국으로 지훈련원사(知訓鍊院事) 등에 제수되었으나 병으로 사직하였다.