- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是 Apache 随机加载一个非默认虚拟主机而不是我要求它加载的域。我已经尝试了我在这个网站上找到的所有解决方案并通过搜索,但似乎没有任何东西可以解决这个问题。
背景:
curl localhost
在服务器上,它返回 domain3.com 的内容。 localhost
在 apache.conf /etc/apache2/sites-enabled/000-default.conf
service apache2 stop
然后 service apache2 status
会将进程识别为非事件状态,但我仍然可以加载 domain1/2/3.com 下的页面。就像我所做的任何事情都没有任何效果一样。 /etc/init.d/apache2
, service apache2
, apache2ctl
. NameVirtualHost *:80
# domain1.com
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.domain1.com
ServerAlias domain1.com
UseCanonicalName Off
ServerAdmin webmaster@localhost
DocumentRoot /var/www/domain1.com/
<Directory /var/www/domain1.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# domain3.com
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.domain3.com
ServerAlias domain3.com
ServerAlias domain3.net
ServerAlias www.domain3.net
UseCanonicalName Off
ServerAdmin webmaster@localhost
DocumentRoot /var/www/domain3.com/
<Directory /var/www/domain3.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/cq2_error.log
CustomLog ${APACHE_LOG_DIR}/cq2_access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# domain2.com
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.domain2.com
ServerAlias domain2.com
UseCanonicalName Off
ServerAdmin webmaster@localhost
DocumentRoot /var/www/domain2.com/
<Directory /var/www/domain2.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
apache2ctl -S
输出:
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-default.conf:1
VirtualHost configuration:
*:80 is a NameVirtualHost
default server www.domain1.com (/etc/apache2/sites-enabled/000-default.conf:4)
port 80 namevhost www.domain1.com (/etc/apache2/sites-enabled/000-default.conf:4)
alias domain1.com
port 80 namevhost www.domain3.com (/etc/apache2/sites-enabled/000-default.conf:54)
alias domain3.com
alias domain3.net
alias www.domain3.net
port 80 namevhost www.domain2.com (/etc/apache2/sites-enabled/000-default.conf:95)
alias domain2.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: 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
最佳答案
至于 Apache 选择一个随机站点:
当你这样做 curl localhost
,它很可能发送了一个没有 Host:
的 HTTP header 定义,因为它的行为类似于直接在浏览器中键入服务器的 IP。 Host:
HTTP 请求中的 header 是 Apache 与 ServerName
匹配的字段。和 ServerAlias
试图找到一个匹配来加载相应的DocumentRoot
.
因此,在这种情况下,如果您没有默认主机设置,并且一个空的 Host: 进入,那么 Apache 将随机选择一个站点(我已经在我的开发服务器上重新创建了这个行为,只是为了验证)。
最好将 000-default.conf 设置为您的包罗万象,并在发生这种情况时决定要做什么,例如重定向到您的一个站点或一个简单的 php 文件,它只是回显一些平淡无奇的东西。然后为每个站点设置单独的 conf 文件以保持井井有条。
如果您的 DNS 记录正确指向您的服务器,那么默认设置只会在机器人出现测试 IP 时触发。
关于Apache vhost 加载不正确的文档根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269078/
如何注释掉 vhosts 文件中的一段文本? 我是否必须在每一行前面放置磅/哈希符号 (#)? 最佳答案 是的,您必须在要注释掉的所有行之前放置磅/哈希符号 ( # )。没有“块注释”标签/符号。 某
我正在尝试通过非标准端口(8787)上的 Apache(ubuntu 14.04 LTS 上的 v2.4.7)为 2 个站点提供服务。这是为了适应代理设置(我让 nginx 在同一台专用服务器上的端口
我有一个现有的服务器,该服务器运行良好,使用 nginx 和 ISPconfig 托管多个站点。不过我已经创建了一个新网站并希望使用 Laravel。 我已经通过 Composer 成功安装了 Lar
我们正在运行一个为我们的客户使用自定义子域的 PHP 站点,因此我们在 Apache(版本 2.2.3)中使用通配符 VHost 实现了通配符 SSL 证书。这些子域 PHP 网络应用程序还在我们的
我已经尝试了数十种指南并阅读了大量信息,但我仍然找不到解决我的问题的方法。我已经卸载、重新安装并检查并仔细检查了每个可能的问题。 问题依旧。无论我做了什么更改,文档根目录始终显示为 c:\wamp\w
我已经在 CentOS 6.4 上安装了 apache 并配置了我的虚拟主机。 但是,当我重新启动 apache(使用此命令:sudo service httpd restart)时,它警告我“警告:
使用带有 connect.vhost 指令的 node.js 作为路由器而不是使用 proxy_pass 的 NGINX 有哪些优点/缺点? 最佳答案 连接虚拟主机 优点 相当简单 只需担心一台服务器
我有 2 个虚拟主机文件:1 个在端口 443 上包含我们所有站点的管理 URL,1 个在端口 80 上包含我们所有站点的主 URL。 apache 知道这两个文件,如 apachectl -S 所示
这是我的第一个站点,我尝试使用 Dokku 在 Digital Ocean 上部署 Rails 应用程序。 这是默认值 Dokku install在托管在 Digital Ocean 上的基本 Ubu
我的 VPS 上有两个子域,我在我的 DNS 中注册了两个子域,指向同一个 IP 地址。 安装的版本是服务器版本:Ubuntu 12.04 的 Apache/2.4.7。 我已经启用了带有 a2ens
我的问题是 Apache 随机加载一个非默认虚拟主机而不是我要求它加载的域。我已经尝试了我在这个网站上找到的所有解决方案并通过搜索,但似乎没有任何东西可以解决这个问题。 背景: 这是一个托管在流行云平
我的 VPS 上安装了 Apache。它托管了一个站点,我们称之为 demo.com(位于/var/www/html/demo.com),但我也有/var/www/html 中的文件,我想通过指向我的
php_admin_value open_basedir "/var/www/html/web/yourcharmstyle.com/htdocs/:/tmp/" 该行的含义和作用是什么?谢
在 vhosts 中有以下配置。当我通过 MAMP 运行它时,它总是返回 500 错误。不知道出了什么问题。停止 mamp 并使用 valet 运行它。 laravel 网站运行成功。 bootstr
我正在使用 Laravel 宅基地。对于一个项目,我需要一个特殊的 vhost 配置,我应该在哪里定义它? 最佳答案 您将一个新的文件夹映射添加到 Homestead.yml 的“sites”块中,如
我有一个 angular 应用程序,我在本地使用 apache 提供服务。我的 vhosts.conf 是: ServerName my.app.com DirectoryIndex ind
我在 Windows 上遇到了 Apache (2.2) 的问题。 我基本上有 2 个 Wordpress 项目。其中 1 个在 1 个(子)域(sub1.mydomain.com)上运行,1 个在另
rabbitmqadmin list vhosts 显示消息但没有队列。为什么有可能? 当我运行 Celery 时,它仍然以某种方式接收消息。如何查看存储消息的队列名称?我想念什么? dmugtasi
Stack Overflow 的新手。 所以我在 Digital Ocean droplet 上使用 Express( Node 9)托管我的网站。我正在使用 express-vhost 所以我可以检
有没有一种方法可以在 tomcats server.xml 或其他地方添加虚拟主机条目,而无需像网络服务器等支持的重新加载信号那样重新启动 tomcat 服务器 我正在为 railo appserve
我是一名优秀的程序员,十分优秀!