自唐、宋至清代属五贤乡保安里和建兴里。
民国初期为第六区,辖有马鼻、透堡、官坂、坑园、长龙五个镇。
1935年编查保甲分设马鼻、赤石、拱头、巽北4个联保,属第三区署。
1941年巽北乡划属罗源县。
1944年马赤与拱透合并为马透乡。
1946年1月改名所南乡。
1949年为第六区驻地。
1955年改为马鼻区。
1958年7月撤区建乡并析出官坂和长龙乡,同年9月成立马鼻人民公社。
1960年1月官坂公社并入(1961年6月又析出)。
1984年撤社建乡。
1990年9月析出南面8个村设立透堡乡。
1992年8月改为镇建制至今。