apache2 - Apache 2.4.41 - 无法在 localhost 上连接多个虚拟主机 / ubuntu 20.04

我已经在我的笔记本电脑上安装了 apache2,并创建了一个虚拟主机来在一个站点上工作以进行开发。这工作正常。我现在需要添加第二个站点,并且遇到了问题,尽管设置与第一个(工作)虚拟主机配置相同。

每当我访问第二个站点时,请求都会被重定向到 https(即使定义了 http),并且浏览器会返回“无法连接”错误页面。

http://dev.mysite.co.uk > 加载正常

http://dev.mysite2.co.uk > 重定向到 https://dev.mysite2.co.uk,并且“无法连接”信息

在过去的几个晚上,我研究了这个问题并尝试了很多建议,包括 www/dir 权限,但没有一个有效。

站点 1 配置,位于 /etc/apache2/sites-available (正常工作):

<VirtualHost *:80>
    ServerName dev.mysite1.co.uk
    DocumentRoot /var/www/mysite1/public_html

    <Directory /var/www/mysite1/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/mysite1.co.uk-error.log
    CustomLog ${APACHE_LOG_DIR}/mysite1.co.uk-access.log combined 
</VirtualHost>

站点 2 配置,位于 /etc/apache2/sites-available:

<VirtualHost *:80>
    ServerName dev.mysite2.co.uk
    DocumentRoot /var/www/mysite2/public_html

    <Directory /var/www/mysite2/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/mysite2.co.uk-error.log
    CustomLog ${APACHE_LOG_DIR}/mysite2.co.uk-access.log combined
</VirtualHost>

...都通过 a2ensite 启用。

/etc/hosts 文件:

127.0.0.1   localhost
127.0.0.1   dev.site2.co.uk
127.0.0.1   dev.site1.co.uk 
127.0.0.1   phpmyadmin
127.0.1.1   mymachine

# 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

apachectl configtest 的输出:

AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 127.0.1.1。全局设置“ServerName”指令以禁止显示此消息语法 OK

(我之前在 apache2.conf 中设置了“ServerName localhost”,它删除了第一条 FQDN 消息,但不影响我遇到的问题)。两者都有指向 /etc/apache2/sites-enabled 中的 vhost 配置的符号链接。 Apache2.conf 是标准的/没有默认的标准安装。浏览器扩展被禁用/相同导致不同的浏览器。

ls -ld /var/www/site1 的输出:

drwxrwxrwx 10 me me 4096 Jan 15 20:50 /var/www/site1

ls -ld /var/www/site2 的输出:

drwxrwxr-x 9 me www-data 4096 5 月 17 日 22:45 /var/www/site2

site2 有 www-data 权限的区别吗?哪个应该是 apache 用户可读的?

chown -R 755 /var/www 没有区别

还意识到 http://localhost 也重定向到 https://localhost 和“无法连接”消息。

http://localhost/phpmyadmin 工作正常。

apachectl -S 的输出:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server dev.site1.co.uk (/etc/apache2/sites-enabled/site1.conf:1)
         port 80 namevhost dev.site1.co.uk (/etc/apache2/sites-enabled/site1.conf:1)
         port 80 namevhost dev.site2.co.uk (/etc/apache2/sites-enabled/site2.conf:1) 
ServerRoot: "/etc/apache2" 
Main DocumentRoot: "/var/www/html" 
Main ErrorLog: "/var/log/apache2/error.log" 
Mutex default: dir="/var/run/apache2/" mechanism=default  
Mutex mpm-accept: using_defaults 
Mutex watchdog-callback: using_defaults 
Mutex rewrite-map: using_defaults 
PidFile: "/var/run/apache2/apache2.pid" 
Define: DUMP_VHOSTS 
Define: DUMP_RUN_CFG 
User: name="www-data" id=33 not_used 
Group: name="www-data" id=33 not_used

回答1

您的问题提到了 5 个不同的主机名。

  • dev.mysite.co.uk
  • dev.mysite1.co.uk
  • dev.mysite2.co.uk
  • dev.site1.co.uk
  • dev.site2.co.uk

apache 配置与 apachectl 输出和 /etc/hosts 内容不匹配。

所以,你编辑了一些东西。

以下是推测,因为不知道编辑了哪些部分。

这是否会发生:对于第一个站点,一切都很好,但是对于第二个站点,您的请求与配置或主机条目不匹配,因此浏览器尝试 https 并失败,因为 dev.site2.co.uk 和 dev.mysite2 .co.uk 在 dns 中不存在。

您可以查看日志文件以查看是否是这种情况:如果 [my]site2 没有日志条目,则主机条目可能是罪魁祸首。

回答2

此问题可能与 301 重定向缓存有关。例如。过去,您已将 301 重定向 (https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301 ) 设置为 https,现在它已缓存在浏览器中。

如果是这种情况,以下链接可能有助于找到解决方案:

注意:您可以先尝试使用过去未使用特定域的浏览器或 curl/wget 并检查它们是否面临相同的问题。如果不是,很可能是缓存问题。

其他可能的原因:

关于 dev.mysite.co.uk 的注意事项:您提到它可以正常工作,但我没有看到有关该域的任何配置。是错字吗?