【发布时间】:2017-06-10 15:20:27
【问题描述】:
我知道我在问题中添加了太多信息,但请多多包涵。
我们的网站在域上运行,例如- domain1.com 有 ip 说例如- 192.168.1.25。现在,我们有另一台通过 IP 运行的服务器,例如192.168.1.26 具有 plesk 面板 12.5.30。请注意,我们没有将我们的域 - domain1.com 指向 192.168.1.26,因为我们希望保留 它是私有的,直到我们设置好一切并准备开始作为生产工作。我们已经在 plesk 面板中使用 domain1.com 设置了我们的域,并创建了 staging.domain1.com 作为子域。
我们修改了本地机器上的 hosts 文件,将 staging.domain1.com 指向 192.168.1.26,这样我们就可以从新服务器访问我们的网站,而主域 - domain1.com 仍在 192.168.1.25 上运行,我们是能够以 domain1.com 身份访问
基本上,我们正在通过 192.168.1.26 IP 设置暂存环境。我们确实在新的暂存域上运行了 CentOS 6,并且我们启用了防火墙规则以在 plesk 面板中的某些 IP 上运行网站。
我们想在新服务器上配置清漆并且我们安装了它。 [我们已经在 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
我们将一条记录设置为 192.168.1.26 - staging.domain1.com 到我们的 DNS,并且我们在暂存域上获得了正确的 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。因此,我们将默认和管理员中的 .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 提供服务。理想情况下,varnish 应该在端口 80 上运行,我们尝试这样做,但不知何故失败了。我们按照https://www.theshell.guru/change-nginx-port-plesk-12-centos-6-6/ 的指南设法在端口 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 时,它直接显示失败并且我们的域 - staging.domain1.com 无法加载,所以我们恢复了上面的所有内容,即
- varnish 端口 6081[VCL 后端位于 80]
- 阿帕奇 7080
- nginx 80
我认为我应该有以下情况:
- 清漆 - 端口 80 [default.vcl 文件应该 greb 来自 8080 端口的内容]
- Nginx - 端口 8080
- Apache - 端口 7080。
在第一种情况下,我们无法确认 varnish 是否正确配置[如果我们设置 IP 而不是真实主机名],在第二种情况下,我们无法启动 varnish 服务,尽管它应该是理想情况。
基本上,我不明白这里有什么问题。
【问题讨论】: