httpd vhosts 配置(使用 Varnish) - 1 个服务器 /w 多个域

httpd vhosts 配置(使用 Varnish) - 1 个服务器 /w 多个域

我已经阅读了有关该主题的多个问题,但似乎无法让它发挥作用......

我有一台运行 CentOS 的服务器,其中 HTTPD 在默认 httpd 根目录下运行 1 个网站:

Listen 8080
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>`

我也在运行 Varnish:Varnish 正在监听端口 80,并将请求转发到 httpd,后者正在监听端口 8080

现在我想在此服务器上运行第二个域,因此我在 /etc/httpd/conf/ 下添加了一个 .conf 文件,内容如下:

<VirtualHost *:8080>
ServerAdmin root@localhost
DocumentRoot /var/www/vhosts/domainx.be
ServerName domainx.be
ErrorLog logs/domainx-error_log
CustomLog logs/domainx-access_log common
</VirtualHost>

当我应用上述操作时,所有流量(包括根域的流量)都会路由到 domainx。当我将 vhost 的端口更改为 80 时,domainx 会被转发到根主机。

这是我第一次在没有安装 Plesk 或 Webmin 之类的软件的情况下执行此操作,所以我不知道下一步该怎么做......

答案1

  • 为您的网站创建一个指向文档根目录的虚拟主机。记得添加NameVirtualHost *:8080

  • 将后端配置放在一个文件中,然后根据请求的主机名将其包含进去:

       如果 (req.http.Host == “domainx.be”) {
           包括“/etc/varnish/domainx.be.vcl”;
       }
    

答案2

为每个虚拟主机(甚至是“真实”站点)创建 vhosts 条目,并且不要忘记包含 ServerName。这应该可以修复您的 Apache 设置。

我个人也总是在 127.0.0.1 端口 80 上运行 apache,在公共 IP 端口 80 上运行 Varnish。这样,您就不会遇到 $_SERVER 变量认为 Varnish 在端口 8080 上运行的问题。

相关内容