Apache-2.2

Nginx 不服務域

  • August 25, 2013

我有一個 13.04 的 Ubuntu 伺服器,有兩個相關的 IP 地址。例如,IP 是123.456.789.111123.456.789.222,伺服器有兩個域,比如說example1.comexample2.com

我目前有 example2.com 由 Apache 提供服務,我有 example1.com 由Varnish > Nginx提供服務。除了example1.com實際上由 apache 提供服務之外,儘管所有設置都顯示它應該由 nginx 提供服務。

在 DNS 中 example1.com 指向123.456.789.111並且example2.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";
}

它將所有東西從清漆轉發到 nginx,因為:

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

我有:

server {
       listen 127.0.0.1:8080;

需要注意的是,我還將該域與sites-enabled/example1.com 進行了simlinked。

所以 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。

看來,在/etc/apache2/ports.conf你有Listen 80而不是,說Listen 123.456.789.222:80。這樣,埠將綁定到特定的 IP 地址。

引用自:https://serverfault.com/questions/533622