The site_url template tag retrieves the (admin/backend) site url for the current site (where the WordPress core files reside) with the appropriate protocol, 'https' if is_ssl() and 'http' otherwise.
If scheme is 'http' or 'https', is_ssl() is overridden. Use this to get the "WordPress address" as defined in general settings. Use
home_url() to get the "site address" as defined in general settings.
In case of WordPress Network setup, use
<?php site_url( $path, $scheme ); ?>