我已经在笔记本电脑上安装了apache2,并创建了一个虚拟主机用于开发站点。这工作得很好。我现在需要添加第二个站点,并且遇到了问题,尽管设置与第一个(工作)vhost配置相同。
当我访问第二个站点时,请求被重定向到https(即使定义了http),并且浏览器返回"无法连接"。错误页面。
http://dev.mysite.co。英国比;加载好
http://dev.mysite2.co。英国比;重定向到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>
…
/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'指令以禁用此消息语法好
(我之前设置了"服务器名localhost"在apache2.conf中,它删除了第一个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 May 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
你的问题提到了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.。英国和dev.mysite2.co。
您可以查看日志文件,看看情况是否如此:如果没有[my]site2的日志条目,则主机条目可能是罪魁祸首。
这个问题可能与301重定向缓存有关。例如:在过去,你设置了一个301
重定向(永久移动)到https
,现在它被缓存在浏览器(s)。
如果是这种情况,以下链接可能有助于找到解决方案:
- 浏览器缓存HTTP 301多长时间? 清除301/302重定向缓存(Chrome)
注意:您可以先尝试与浏览器,,没有使用特定的域在过去,或curl/wget
,检查它们是否面临相同的问题。如果不是,很可能是缓存问题。
其他可能原因:
- 一个浏览器插件操作的概念(https无处不在)(但正如你所说:"浏览器扩展禁用/相同的结果在不同的浏览器。")
- iptables重定向http到https的规则。
- 一些被遗忘的apache规则在所有域中运行
关于dev.mysite.co.uk
的注意事项:您提到它工作正常,但我没有看到关于该域的任何配置。是打错了吗?