如何从互联网访问虚拟主机?
Posted
技术标签:
【中文标题】如何从互联网访问虚拟主机?【英文标题】:How to access virtual host from the internet? 【发布时间】:2019-10-02 03:05:33 【问题描述】:我想通过互联网上的虚拟主机访问我的网站。现在,我正在使用我的服务器的公共 IP 地址来访问我的网站。这是我正在使用的(请参见下文)。
http://122.4.195.12:7777/site/index.php
-
有没有办法从 Internet 访问我的虚拟主机?当我从 Internet (https://mysite/site/index.php) 访问我的虚拟主机时,我得到了
DNS_PROBE_FINISHED_NXDOMAIN 错误 找不到 mysite 的服务器 IP 地址。
-
通过公共 IP 地址访问我的网站时,是否可以添加 SSL?当我将 http 更改为 https 时,我得到了
ERR_SSL_PROTOCOL_ERROR 122.4.195.12 发送了无效响应。http://122.4.195.12:7777/site/index.php -> https://122.4.195.12:7777/site/index.php
这是我的虚拟主机配置:
<VirtualHost *:7777>
DocumentRoot "C:\xampp\htdocs"
ServerName mysite
<Directory "C:\xampp\htdocs">
Require all granted
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs"
ServerName mysite
SSLEngine on
SSLCertificateFile "crt/scratchitsite/server.crt"
SSLCertificateKeyFile "crt/mysite/server.key"
<Directory "C:\xampp\htdocs">
Require all granted
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这是我服务器的主机文件:
127.0.0.1 mysite
【问题讨论】:
感谢编辑,根据您的最新信息尝试我在下面提到的内容。 【参考方案1】:关于问题 1
更简单的方法仍然是注册一个域名,将其指向您的 IP 地址,并为其设置您的 VirtualHost ServerName
VirtualHost 实际检测到来自服务器站点的Host
HTTP Header,所以这里的关键是:
如何让客户端浏览器发送
Host
标头与您在服务器上定义的一样
例如,通过使用 CURL,您可以强制它使用用户定义的 Host
标头,如下所示:curl -H 'Host: mysite' 122.4.195.12:7777/site/index.php
如果您使用的是 Chrome,可以尝试使用浏览器扩展程序,例如 this
关于问题 2
您已在 Apache 配置中的端口 443 而不是 7777 上启用了 HTTPS
这意味着您应该像 https://122.4.195.12:443/site/index.php
而不是 https://122.4.195.12:7777/site/index.php
那样访问您的 HTTPS 服务
【讨论】:
如何启用7777的https? 我添加了 chrome 扩展我在源软管和虚拟主机中放了什么? 你不能同时启用 HTTP 和 HTTPS 到同一个端口(例如 7777),它们必须不同。对于扩展,将您的 IP 地址放在源主机上,虚拟主机是您的域名(例如 mysite) 那么我将在我的虚拟主机中做什么来启用 https?你能告诉我我有点困惑吗 你已经做到了,在<VirtualHost *:443>
部分有一个ServerName
指令以上是关于如何从互联网访问虚拟主机?的主要内容,如果未能解决你的问题,请参考以下文章