无法从主机 (Windows) 访问 Apache (Linux Guest) 上的 Flask Web 服务

Flask web service on Apache (Linux Guest) cannot be accessed from Host (Windows)

我有一个 Windows 10 Host 运行ning 一个 Linux Mint Guest 通过 VirtualBox。在 Linux 上,我用 Visual Studio 代码构建了一个 Python-Flask 网络服务,并托管在 Apache 2 上。

关于客人:

服务实例位于:/var/www/ZZ。以下是字典结构:

__init__.py 实现具有以下内容:

...
if __name__ == '__main__':
  app.run(host='0.0.0.0', port=5000, debug=True)

ZZ.wsgi 实现如下:

#!/usr/bin/python
import sys
sys.path.insert(0,"/var/www/ZZ")
from __init__ import app as application

在 /etc/apache2/sites-available/ 上的配置 ZZ.conf 如下:

<VirtualHost *:80>
 ServerName XX.com
 WSGIDaemonProcess ZZ user=YY group=YY threads=5
 WSGIScriptAlias / /var/www/ZZ/ZZ.wsgi
 <Directory /var/www/ZZ>
  WSGIProcessGroup ZZ
  WSGIApplicationGroup %{GLOBAL}
  Require all granted
 </Directory>
</VirtualHost>

并且我有 运行: sudo a2ensite ZZ,即 /etc/apache2/sites-enabled.

中已经有一个 link 到 ZZ.conf

/etc/ 中的主机文件具有以下内容:

127.0.0.1   localhost
127.0.1.1   YY-VirtualBox
192.168.56.101  XX.com
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

我有运行: sudo service apache2 restart.

运行: id -gn, and; id -Gn,确认用户YY和组YY。

此外,Apache 版本为:Apache/2.4.18。 Python 版本为:3.5.2.

在主机上(Windows 10):

我的 VirtualBox 网络设置是:

所以 - 问题是如何从主机 (Windows 10) 到达 XX.com? IE。如何 call/access 来自外部呼叫者的 Web 服务(至 Linux 来宾)?

我试过端口转发,但没有成功。任何帮助深表感谢。提前谢谢你。

经过一些 Google-ing,我发现执行以下操作可以解决此问题:

  1. 在 VirtualBox 中添加了一个端口转发规则:
    • 姓名:阿帕奇。
    • 协议:TCP。
    • 主机IP:[空]。
    • 主机端口:8080。
    • 来宾 IP:[空]。
    • 来宾端口:80。
  2. 在主机上,我编辑了 C:\Windows\System32\drivers\etc 中的文件 "hosts" 添加了以下行: 192.168.56.101XX.com

请注意,我的防火墙在来宾上处于关闭状态。我现在可以从主机访问 XX.com。