Nginx 不服務域
我有一個 13.04 的 Ubuntu 伺服器,有兩個相關的 IP 地址。例如,IP 是123.456.789.111和123.456.789.222,伺服器有兩個域,比如說example1.com和example2.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 地址。