This is my code:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\tikzstyle{node}=[rectangle,draw=black,text width=3cm,inner sep=0.2cm,text centered]
\begin{tikzpicture}
\node (A) [node] {A};
\node (B) [node, below left=3cm of A] {B};
\draw[->] (B.north) -- +(0,1cm) -- +(5cm,1cm) -- (A.south);
\end{tikzpicture}
\end{document}
This renders as follows:

Now I obviously want to last line to be orthogonal. I know about stuff like (B.north|-A.south), but that is not applicable here. Changing the last -- to |- also does not yield the desired result, because the arrow then continues along the border of A. How can I make the last portion of the arrow orthogonal?

|-because this means the line is first vertical, then horizontal. You should use-|. – Alenanno Jul 17 '16 at 14:30