自唐、宋至清代屬五賢鄉保安里和建興里。
民國初期為第六區,轄有馬鼻、透堡、官坂、坑園、長龍五個鎮。
1935年編查保甲分設馬鼻、赤石、拱頭、巽北4個聯保,屬第三區署。
1941年巽北鄉劃屬羅源縣。
1944年馬赤與拱透合并為馬透鄉。
1946年1月改名所南鄉。
1949年為第六區駐地。
1955年改為馬鼻區。
1958年7月撤區建鄉并析出官坂和長龍鄉,同年9月成立馬鼻人民公社。
1960年1月官坂公社并入(1961年6月又析出)。
1984年撤社建鄉。
1990年9月析出南面8個村設立透堡鄉。
1992年8月改為鎮建制至今。