nginx > 清漆 > hhvm

nginx > 清漆 > hhvm

我在前端有 nginx 解釋 ssl 並將所有非 https 流量重定向到 https:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;
}

從那裡開始,下一個伺服器區塊解釋 ssl 並傳遞給 varnish:

server {
    listen 443 ssl spdy;
    server_name example.com www.example.com;
    ...<ssl stuff>...

    location / {
        proxy_pass http://127.0.0.1:6081;
        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 https;
        proxy_set_header X-Forwarded-Port 443;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

我已經從 varnish 中取出了所有內容來幫助調試我的問題,所以到目前為止它只是在連接埠 8080 上傳遞回 nginx

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

回到 nginx 連接埠 8080 伺服器區塊:

server {
   listen       8080;
   server_name  example.com www.example.com;
   ...<access logs root index stuff>...

   location ~ \.php$ {
       try_files $uri =404;
       include fastcgi_params;
       fastcgi_pass php;
   }
}

php 變數指向 127.0.0.1:hhvmport 上 hhvm 的上游,並回退到 127.0.0.1:php-fpmport。

當我嘗試聯絡 WordPress 管理員時,我得到了一個重定向循環。我不確定這是 WordPress 問題還是伺服器設定問題,因為當我從上游刪除 hhvm 並直接轉到 php-fmp 時,我沒有任何問題。還捲曲-Ihttps://www.example.com/wp-admin/顯示 302 重定向到https://www.example.com/wp-admin/而不是 301。添加的標頭(X-Forwarded 等...)是否會混淆 hhvm 並預期流量來自 443?

/var/log/hhvm/error.log 除了創建 jit 之外沒有向我顯示任何內容在 nginx 中打開重定向日誌,它也沒有幫助我。沒想到會這樣,但值得一試。

真的很困惑這裡發生了什麼事。我不確定這是否屬於 WordPress 部分,因為刪除 varnish 可以解決問題,或者繞過 WordPress 管理部分中的 hhvm 也可以解決問題,它看起來更像是設定問題。任何幫助將非常感激。在 Ubuntu 14.04 上運行(如果這有任何意義的話)。

答案1

當您將 WordPress 設定為將所有不安全流量重新導向至安全 URL(例如透過.htaccess)時,可能會發生這種情況。發生的情況是,第一個請求到達,被剝離 SSL 標頭,然後到達 WordPress,WordPress 注意到連線不安全,因此向上游發送重定向到客戶端。

如果您認為 WordPress 沒有這樣做,請嘗試使用一些扁平的 PHP(非常簡單的東西,例如<?php phpinfo(); ?>)。如果使用平面PHP 進行此操作,則調試此問題的最佳方法往往是嗅探A 點和B 點之間的流量(以查看預期流量與實際流量之間的脫節出現在哪裡),或者直接轉到有趣的地方連接埠(例如,透過http://host:port/URI 語法、修改“hosts”檔案和/或使用連接埠轉送)並一次向上存取一個服務堆疊,直到獲得與預期不一致的資料。

答案2

事實證明我需要添加:

fastcgi_param HTTPS on;

在傳遞給 php 的位置區塊中,現在一切都按預期工作。

相關內容