Приветствую!
Не совсем понятно, почему Вы хотите получить такое поведение блоков (поставленная задача), при этом создавая структуру саму по себе, говорящую напрямую - обратное.
У вас есть:
<header class="main-page-header header"></header>
, в который вы вкладываете div с библиотечным бутстраповским классом container... Определяете фон именно к внешнему семантическому контейнеру , который по умолчанию имеет width: 100%, как и любой другой блочный элемент. Это объясняет то, по какой причине фон на всю ширину области просмотра. С этим разобрались. Идем дальше.
Далее Вы вкладываете навигацию снова в .container
библиотеки bootstrap, что и является ограничителем для вашего <nav>
Решение
Вытащите родительский контейнер навигации из ограничивающего .container, а вот его содержимое уже можете в него вкладывать, либо, по крайней мере, применяйте не .container, а .container-fluid