域名未由 Nginx 提供服务

域名未由 Nginx 提供服务

我有一台 13.04 Ubuntu 服务器,有两个关联的 IP 地址。例如,IP 是123.456.789.111123.456.789.222假设服务器有两个域名示例1.comexample2.com

我目前有 example2.com 由 Apache 提供服务,还有 example1.com 由Varnish > Nginx。 除了示例1.com实际上是由 apache 提供服务,尽管所有设置都显示它应该由 nginx 提供服务。

在 DNS 中 example1.com 指向123.456.789.111example2.com指向123.456.789.222

/etc/apache2/ports.conf

我已将其设置为:

NameVirtualHost 123.456.789.222:80
Listen 80

因此,任何指向该域的域都应由 Apache 提供服务,事实也确实如此。

/etc/default/varnish

我已将其设置为:

DAEMON_OPTS="-a 123.456.789.111:80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

因此,任何指向该域名的网站都应该被 Varnish 接收。

然后在:

/etc/varnish/default.vcl

我已将其设置为:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

它将所有内容从 varnish 转发到 nginx,因为:

/etc/nginx/sites-available/example1.com
root /var/www/example1.com/public/

我有:

server {
        listen 127.0.0.1:8080;

值得注意的是,我还将该域名链接到 sites-enabled/example1.com。

因此 example1.com 应该由 Varnish 加载,然后由 Nginx 提供服务,但实际上它正在从以下位置加载内容:

/var/www/

另外,如果我使用 example1.com 执行 www.isvarnishworking.com,它会说它没有通过 varnish 加载。(是的,我使用的是实际域名,而不是 example1.com,我使用它是为了写这篇文章)。

我还重新启动了 Varnish Nginx 和 Apache 服务,它们都重新启动了,没有任何问题。

我还禁用了 nginx 中的默认站点:

sudo rm -v /etc/nginx/sites-enabled/default

另请参阅:

/etc/apache2/sites-enabled

example1.com 不存在(因为它不应该存在,因为我不希望它被 Apache 加载)。

我不知道还要检查什么。有没有人有什么想法或命令可以帮助我查看哪些 example1.com 没有被 apache 加载并传递给 nginx?

** 更新 **

如果我先停止 nginx、apache2 和 varnish,然后打开 varnish 和 nginx,那么 example1.com 确实会使用 varnish 和 nginx 正确加载。但是如果我运行:

sudo service varnish start

它说:

(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80

但我不知道为什么,因为 apache 和 varnish 都在监听端口 80,但它们在不同的 IP 地址上监听端口 80。

答案1

看来/etc/apache2/ports.conf您有Listen 80而不是Listen 123.456.789.222:80。这样端口就会绑定到特定的 IP 地址。

相关内容