如何从互联网访问虚拟主机?

时间:2019-05-15 03:32:58

标签: php apache ssl xampp virtualhost

我想通过互联网上的虚拟主机访问我的网站。现在,我正在使用服务器的公共IP地址访问我的网站。这是我正在使用的(请参见下文)。

  

http://122.4.195.12:7777/site/index.php

  1. 是否可以从互联网访问我的虚拟主机?当我从Internet( https://mysite/site/index.php )访问虚拟主机时,我得到
  

DNS_PROBE_FINISHED_NXDOMAIN错误
  找不到mysite的服务器IP地址。

  1. 通过公用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 个答案:

答案 0 :(得分:0)

问题1

更简单的方法仍然是注册域名,将其指向您的IP地址,并为其设置VirtualHost ServerName

VirtualHost实际上从服务器站点检测到Host HTTP标头,因此这里的关键是:

  

如何使客户端浏览器发送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服务