Причина состоит в том, что в режиме NAT VirtualBox эффективно обеспечивает маршрутизацию Интернет-трафика к и от виртуальной машины, тогда как в режиме моста необходимо сделать это сами. Другими словами, необходимо настроить главный компьютер как интернет-шлюз (с передачей и SNAT или подменой). В режиме моста ведет себя Ваш гость, как будто это был абсолютно отдельный компьютер на LAN позади брандмауэра (или абсолютно отдельный компьютер в Интернете, но это потребует отдельного статического IP-адреса), который является видом смысла выполнения виртуальной машины.
Так как у Вас, вероятно, только есть один статический общедоступный IP-адрес, необходимо связать другой (внутренний) IP-адрес с хостом ОС, или в том же интерфейсе или в другом, и затем или позволить гостю получать IP-адрес в той же внутренней подсети с сервера DHCP или настраивать его статически тот путь. Затем Вы настраиваете iptables на хосте, чтобы сделать передачу от внешнего IP до внутренней LAN плюс соответствующие правила для SNAT/MASQUERADE, и все должны быть в порядке.
Я вижу, что вы используете nginx и порт 7080 для apache.
Если ваша архитектура когда-либо включает несколько серверов apache и какую-то балансировку нагрузки, то вы должны что-то сделать для совместного использования сеансов через несколько серверов apache (memcached, умная балансировка нагрузки, nfs, mysql, ...).
Edit # 1
IMHO, поскольку у вас только один веб-сервер, сейчас нет причин пытаться использовать memcached для хранения сеансы.
В какой-то момент вам удалось настроить php для использования файлов для хранения сеансов, но файлы сеансов не были эффективно записаны / var / lib / php / session
Вот почему вы теряете сеанс при переходе с одной страницы к другому.
/ var / lib / php / session permissions обычно в порядке, и сеансы работают нормально в большинстве дистрибутивов linux и bsd.
Чтобы проверить, что разрешения в порядке, выполните следующие действия:
Шаг 1: Убедитесь, что php настроен для записи в / var / lib / php / session, используя ваш URL-адрес, который вызывает phpinfo (). Вы должны получить что-то вроде:
Registered save handlers => files user
session.save_path => /var/lib/php/session
шаг 2: Проверьте, под каким пользователем запущен apache, с помощью ps и просмотрев файлы конфигурации.
Вы должны получить apache, www, www-data или http.
шаг 3:
Убедитесь, что пользователь apache имеет право записи в путь сеанса. Это можно сделать, набрав ls -ld / var; ls -ld / var / lib; ls -ld / var / php; ls -ld var / lib / php / session
или эффективно создав файл с пользователем apache
su - www -s / bin / bash или su -m www
затем
touch / var / lib / php / session / test
Если разрешение не является проблемой, мы можем попробовать прочее