Curve modifier -applying Nurbspath displaces the object
The curve modifier is complex and it takes some playing with it to get used to how it works.  Start by looking at how your objects are orientated in space.

In object mode, the curve is orientated with its X-axis along the global negative Y-axis and the Y-axis along the global X-axis.



Examine the curve in edit mode.  Your curve is oriented along the Y-axis with the curve normals along the X-axis.



In object mode, apply (Ctrl + A) the curve rotation.  Now the object's Y axis points along the curve and the object's X-axis points along the curve's normals.  



The tunnel object is also rotated.  Apply the rotation so the tunnel points along the positive global Y-axis.



Now add the NurbsPath to the Curve modifier and set the deformation axis to Y.  The tunnel is deformed along the curve, but the roof is lying on the X-axis.  The curve thinks the X-axis is 'up' because its normals point in this direction.



Select the curve and tab into edit mode.  Select all of the control points and adjust their Tilt by 90 degrees (Ctrl + T, 9, 0).



Now you can adjust your curve's control points to make a nice, smooth tunnel.  Hint: turn on the Merge option on your array modifier.