To make the sauce: Melt butter in a 1 1/2 to 2-quart heavy saucepan over moderately low heat. Whisk in flour and cook the roux, whisking, 2 minutes. Add the milk in a stream, whisking, and bring to a boil over high heat, whisking constantly (sauce will thicken). Reduce heat and simmer, whisking occasionally, 2 minutes, then whisk in salt, pepper, and nutmeg. Remove from heat and whisk in cheese, then cover pan.
To make the cannelloni: Heat oil in a 5 to 6-quart heavy pot over moderately high heat until hot but not smoking, then saute onion and garlic, stirring occasionally, until lightly browned, about 5 minutes. Add spinach and saute, stirring, until just wilted, about 3 minutes. Remove from heat and cool completely.
Stir together ricotta, egg, parsley, prosciutto, if using, salt, pepper, and 1/3 cup cheese in a bowl, then stir in spinach mixture.
Boil pasta 2 pieces at a time in a 6 to 8-quart pot of boiling salted water, stirring to separate, until just tender, about 2 minutes for fresh pasta or about 6 minutes for oven-ready noodles. Gently transfer with a slotted spoon to a large bowl of cold water to stop cooking, then remove from bowl, shaking off water, and lay flat in between layers of plastic wrap. (Trim oven-ready noodles, if using, as closely as possible to 6 1/4 by 5 1/2-inch rectangles.)
Preheat oven to 425 degrees F.
Spread 2/3 cup sauce in buttered baking dish. Spread about 1/3 cup ricotta filling in a line along 1 short side of 1 pasta rectangle, then roll up to enclose filling. Transfer, seam side down, to baking dish. Make 7 more cannelloni in same manner, arranging snugly in 1 layer. Spread 1/2 cup more sauce over cannelloni and sprinkle with remaining cheese. Bake, covered with foil, in middle of oven until sauce is bubbling, about 20 minutes.
Turn on broiler.
Remove foil and broil cannelloni about 5 inches from heat until lightly browned, 2 to 4 minutes. Let stand 5 minutes before serving. Reheat remaining sauce and serve on the side.