Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Centos 子域的plesk清漆_Centos_Varnish_Plesk - Fatal编程技术网

Centos 子域的plesk清漆

Centos 子域的plesk清漆,centos,varnish,plesk,Centos,Varnish,Plesk,我知道我在问题中添加了太多的信息,但请容忍我 我们的网站在域名上运行,比如域名1.com,ip地址是192.168.1.25。现在,我们有了另一台通过IP运行的服务器,例如192.168.1.26,它有plesk panel 12.5.30。请注意,我们尚未将我们的域名domain1.com指向192.168.1.26,因为我们希望保留该域名 它是私有的,直到我们设置好所有内容并准备开始生产。我们已经在plesk panel中使用domain1.com设置了我们的域,并将staging.doma

我知道我在问题中添加了太多的信息,但请容忍我

我们的网站在域名上运行,比如域名1.com,ip地址是192.168.1.25。现在,我们有了另一台通过IP运行的服务器,例如192.168.1.26,它有plesk panel 12.5.30。请注意,我们尚未将我们的域名domain1.com指向192.168.1.26,因为我们希望保留该域名 它是私有的,直到我们设置好所有内容并准备开始生产。我们已经在plesk panel中使用domain1.com设置了我们的域,并将staging.domain1.com创建为子域

我们修改了本地计算机上的主机文件,将staging.domain1.com指向192.168.1.26,这样我们就可以从新服务器访问我们的网站,而主域domain1.com仍在192.168.1.25上运行,我们可以作为domain1.com访问

基本上,我们是在192.168.1.26 IP上建立登台环境。我们确实有CentOS 6在新的过渡域上运行,我们在plesk panel中启用了防火墙规则在某些IP上运行网站

我们想在新服务器上配置varnish,并安装了它。[我们已经在plesk论坛上投票支持varnish请求。]在plesk上,我们确实有apache在端口7080上运行,nginx在端口80上运行

> netstat -ntlp | grep -w 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      29795/nginx         
tcp        0      0 :::80                       :::*                        LISTEN      29795/nginx         

> netstat -ntlp | grep -w 7080
tcp        0      0 0.0.0.0:7080                0.0.0.0:*                   LISTEN      10161/httpd
我们在DNS中设置了一个记录192.168.1.26-staging.domain1.com,我们在staging域上获得了正确的IP。我们将/etc/varnish/default.vcl文件设置如下:

backend default {
  .host = "192.168.1.26";
  .port = "80";
}

backend admin {
  .host = "192.168.1.26";
  .port = "80";
  .first_byte_timeout = 18000s;
  .between_bytes_timeout = 18000s;
}

sub vcl_recv {
    if (req.restarts == 0) {
        if (req.http.x-forwarded-for) {
            set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + cl$
        } else {
            set req.http.X-Forwarded-For = client.ip;
        }
    }
    if (req.request != "GET" &&
        req.request != "HEAD" &&
        req.request != "PUT" &&
        req.request != "POST" &&
        req.request != "TRACE" &&
        req.request != "OPTIONS" &&
        req.request != "DELETE" &&
        req.request != "PURGE") {
        /* Non-RFC2616 or CONNECT which is weird. */
        return (pipe);
    }

    if (req.http.cookie ~ "adminhtml=") {
        set req.backend = admin;
    }
}
以下是/etc/sysconfig/varnish文件:

VARNISH_LISTEN_PORT=6081
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_VCL_CONF=/etc/varnish/default.vcl
我们启动了varnish服务-/etc/init.d/varnish start并检查了端口6081:

> netstat -ntlp | grep -w 6081
tcp        0      0 0.0.0.0:6081                0.0.0.0:*                   LISTEN      23745/varnishd      
tcp        0      0 :::6081                     :::*                        LISTEN      23745/varnishd    
但当我们通过访问staging.domain1.com:6081检查我们的站点时,我们得到了响应,但浏览器中显示的URL指向domain1.com。所以我们将default&admin中的.host改为域名-staging.domain1.com,如下所示,然后重新启动了varnish服务,但它没有这样做

backend default {
    .host = "staging.domain1.com";
    .port = "80";
}

backend admin {
    .host = "staging.domain1.com";
    .port = "80";
    .first_byte_timeout = 18000s;
    .between_bytes_timeout = 18000s;
}
我不明白为什么它在添加真实(子)域名后不重新启动。另一件事:站点从端口80即nginx提供服务。理想情况下,清漆应该在端口80上运行,我们试图这样做,但不知何故我们失败了。我们按照-,在8080端口上运行nginx。基本上,我们在/usr/local/psa/admin/conf/templates下添加了自定义目录,并在那里复制了以下文件并更新到端口8080

  • nginx.php
  • nginxDomainForwarding.php
  • nginxDomainForwardingIpDefault.php
  • nginxDomainVhost.php
  • nginxDomainVhostIpDefault.php
  • nginxWebmail.php
然后我们更改了,varnish侦听端口为80,而不是端口6081,但当我们启动varnish时,它立即显示失败,并且我们的domain-staging.domain1.com无法加载,因此我们恢复了上面的所有内容,即

  • 端口6081上的清漆[VCL后端80]
  • apache 7080
  • nginx 80
我假设我应该有以下场景:

  • Varnish-端口80[default.vcl文件应包含8080端口的greb内容]
  • Nginx-端口8080
  • Apache-端口7080
在第一个场景中,我们无法确认varnish是否正确配置[如果我们设置IP而不是真实的主机名],在第二个场景中,我们无法启动varnish服务,尽管这应该是理想情况


基本上,我不明白这里出了什么问题。

首先,不要使用带有Plesk或任何控制面板的清漆。这永远不会带来好结果。在裸体Linux服务器上使用它,以便更好地了解正在发生的事情

第二,你几乎做到了:)varnish VCL中的后端IP必须保持为IP。将域放在那里而不是IP是错误的。Varnish将自动将主机头从HTTP请求转换到底层后端服务器。 因此,如果您打开带有URL的页面,则会发生以下情况:

  • 主机为:暂存域的HTTP请求已到达
  • 然后Varnish将以相同的值传递给Apache/Nginx
很可能你最初的问题是由你的应用程序/网站发起的重定向

简单地说,你正在尝试访问,你的应用被重定向到,因为它的设置/配置中有“域”硬编码。这是很常见的事情

因此,解决办法是:

  • 将IP更改为80
  • 将您的后端web服务器更改为其他端口,即8080
  • 将varnish VCL后端定义调整为web服务器的IP和端口,即192.168.1.26和8080
  • 调整您的web应用设置,特别是基本URL
您可能还必须将实际端口转换为Nginx,并在Nginx配置中禁用重定向中的端口:

port_in_redirect off;
如果全部失败,请使用专业安装服务:)