Apache 总是回退到内置页面

Apache 总是回退到内置页面

我用 Dart 开发了一个国际象棋网页游戏,尝试部署到网络主机时失败了。当我使用公网 IP 访问这个网页应用时,它运行顺利。但是,当使用域名访问时,它总是返回到默认页面。这是我的 Apache 设置:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /home/user/my_web_app

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

        SSLVerifyClient none

        #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>

        ProxyPreserveHost On

        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/
    </VirtualHost>
</IfModule>

我尝试了 Apache 和 Nginx;发生了相同的情况。但是,我不知道问题出在哪里?有什么建议吗?

[2017-06-08更新] 我修改了Apache中的设置,最终发现这是由于Cloud Flare引起的像这样。我更换了 DNS 提供商。大多数问题都解决了。

答案1

有一篇很好的文章虚拟主机故障排除。以下是一份可能对您的情况有帮助的简短清单:

  1. 仔细检查这是否是您唯一的<VirtualHost *:443>。命令apache2ctl -S可能会有所帮助,因为它会检查您的配置、检查语法并提供所有虚拟主机的列表。
  2. 你正在ProxyPass整理一切:删除不必要的DocumentRoot指示。
  3. 查看ServerName。任何包含魔法_default_通配符的虚拟主机都ServerName与 main_server 相同,但如果 main_server 没有,Apache 会尝试根据服务器的主机名并使用 DNS 推断它。这可能会产生意外结果(请参阅虚拟主机匹配的深入讨论)。

答案2

您没有提到您使用的是哪种操作系统。我假设您使用的是 Ubuntu。那么您必须遵循某些步骤才能使您的 webapp 与域名一起工作。

 1. Create a vhost.conf file in /etc/apache2/sites-available/000-vhosfilename.conf

我可以看到你已经粘贴了 vost 配置文件,但是你缺少一个重要的指令,即服务器名称

  1. 我再次分享您上面粘贴的 vhost 文件的配置,并向其中添加 ServerName 指令。只需将您的域名替换为 example.com

    <IfModule mod_ssl.c>
     <VirtualHost _default_:443>
          ServerAdmin webmaster@localhost
          ServerName example.com
          DocumentRoot /home/user/my_web_app
    
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
    
          SSLEngine on
    
          SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem
          SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
          SSLVerifyClient none
    
          #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
          <FilesMatch "\.(cgi|shtml|phtml|php)$">
           SSLOptions +StdEnvVars
          </FilesMatch>
    
          ProxyPreserveHost On
    
          ProxyPass / http://127.0.0.1:8080/
          ProxyPassReverse / http://127.0.0.1:8080/
     </VirtualHost>
    </IfModule>
    
  2. 此后只需保存 vhost 文件并启用 vhost 配置文件。

    a2ensite 000-vhosfilename.conf
    
  3. 现在重新启动 apache 并再次使用域名浏览您的 webapp。希望它现在应该可以正常工作。

相关内容