Поднимаете это соединение и теперь указанные сервера доступны по 127.0.0.1:8001 и тд.
Либо то же самое можно реализовать открыв sock proxy и подключаясь через него.
Если я правильно все понял, то попробуйте заменить proxy_set_header Host $http_host; на proxy_set_header Host domain.loc;
Или пропишите в вашем домашнем nginx вместо (или в дополнение к) domain.loc - domain.ru
Суть в том что на ваш домашний сервер приходит запрос вида
GET / /HTTP1.1
Host: domain.ru
А домашний nginx, если я правильно понял имет настройку server_name domain.loc;
1) netstat -lnp - вы уже проверили (какой адрес слушает vnc?)
2) iptables --list - проверить работают ли правила (возможно требуется iptables restart)
3) ifconfig - удостовериться какой ip стоит на сервере и его ли слушает vnc (или 0.0.0.0)
4) проверить к какому ip вы подключаетесь (ping ip - проверить на доступность)
Посмотрите тут про nginx - www.lexa.ru/nginx-ru/msg13743.html
Вам нужно только виртуальные хосты заменить на пользовательские IP.
А уж лог разобрать - дело техники.
Что показывает top во время того как апач висит?
Так же неплохо бы включить server-status у апача и посмотреть за его внутренним состоянием, особенно после того как он начинает тормозить.
Если url при обновлении меняются (если новый контент только добавляется и старый удаляется) или есть возможность их менять (при обновлении), то можно попробовать nginx + proxy_pass + кеширование nginx.
Ну или если url не меняются то же самое, но сброс кеша у обновленных файлов скриптом по списку.