nginx總是向本機apache發送請求

nginx總是向本機apache發送請求

我在同一台伺服器 Apache(連接埠 81)和 NGINX(連接埠 80)上運行。對於 www.example.com,我在 NGINX 設定檔中有以下內容。

問題是,當Apache 在此伺服器上啟動時,對www.example.com 的所有請求都會傳送到連接埠81 上的Apache 伺服器。中配置所以錯誤遍地都是。

我不希望它成為本地的,而只想成為上游定義的外部的。

當我停止 apache 時,將使用上游,並且來自 nginx 的請求將發送到上游中定義的伺服器,當我再次啟動 Apache 時,所有請求都會路由到 Apache 本地

那麼,如何避免在載入 Apache 時將請求傳送到 Apache,並讓 nginx 始終使用定義的上游呢?

upstream mainserver {
    server w1.externalserver.nl;
    server w2.externalserver.nl;
}

server {
listen 80;

server_name www.example.com;

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://mainserver;

}
}

答案1

我建議在 nginx 配置中定義連接埠號碼:

upstream mainserver {
    server w1.externalserver.nl:81;
    server w2.externalserver.nl:81;
}

並檢查 Apache 是否偵聽您的正確連接埠。對於 Ubuntu 安裝:Apache2.conf或者連接埠設定檔(也檢查這個文件,它可能內容重寫設定):

Listen 127.0.0.1:81

更新1

+-------------+
| server 1    | <------- http request :80
|             |
| nginx ----+ | -------> redirect to server 2 (You want)
|           | |
| Apache <--+ | internal redirect to local Apache (problem place)
+-------------+

1)。在伺服器 1 上執行 Apache 和 nginx。 curl -I http://example.com:80 檢查回應中的「伺服器」欄位。如果存在 Apache - 仔細檢查所有設定:apache2.conf、ports.conf、虛擬主機配置 - 某處提到連接埠 80 和 Apache「重寫」nginx「監聽」。

2)。嘗試proxy_pass http://mainserver;-proxy_pass mainserver;沒有協議。

相關內容