Magento + Turpentine + SSL 仅生成 HTTP URL

Magento + Turpentine + SSL only generates HTTP URLs

我正在为这个问题而烦恼,所以非常感谢您的帮助:/

我将 Turpentine 与 Magento 1.7 CE 和 Varnish 3 一起使用,效果很好。现在我想添加 SSL 加密,但效果不佳。

SSL 加密由 Pound(监听 443)终止,然后数据被提供给 Varnish(监听 6081),最后提供给 nginx(8080)。问题是所有生成的 URLS(产品链接、类别...)都是使用 HTTP 而不是 HTTPS 生成的。

我试图将不安全的基础 url 设置为 https,但这完全破坏了我的网站(我有一个 404 "embed-loop" 从未停止加载)。

SSL 卸载似乎有效,因为所有资源都使用 HTTPS 加载(如果我在 Magento 中弄乱了 SSL 卸载设置,我会收到有关混合内容的警告)。

phpinfo 告诉我有关 HTTPS 的信息:

[...]
_SERVER["HTTPS"] on
_SERVER["HTTP_SSL_OFFLOADED"] 1
[...]

我的配置:

Magento(我认为最重要的部分):

Auto-redirect to Base URL: No
Use Web Server Rewrites: Yes
Unsecure Base URL: http://myurl.com
Secure Base URL: https://myurl.com
Use Secure URLs in Frontend: Yes
Offloader Header: HTTP_SSL_OFFLOADED

英镑:

ListenHTTPS
    Address 0.0.0.0
    Port    443
    Cert    "/path/to/my/cert.pem"
    xHTTP   2
    RewriteLocation 1
    Ciphers "RC4:!SSLv2:!ADH:!aNULL:!eNULL:!NULL:!LOW:!EXP"
    AddHeader "Ssl-Offloaded: 1"
End

Service
    BackEnd
        Address 127.0.0.1
        Port    6081
    End
End

Varnish 使用 Turpentine-Config(没有 SSL 也能正常工作)

nginx:

server {
        listen 8080 default_server;

        root /var/www/mysite.at;

        index index.php;

        server_name _;

        location / {
                try_files $uri $uri/ /index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }


        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;

                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;

                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               fastcgi_param HTTPS on;
        }

        location ~ /\.ht {
                deny all;
        }
}

我真的没有主意:( 如果需要,我很乐意提供有关我的配置的更多详细信息。

原来我有多个问题。

  1. "location /" 的 nginx 配置:

    location / {
            try_files $uri $uri/ @handler;
    }
    
    location @handler {
            rewrite / /index.php;
    }
    

没有它,ajax 调用将无法工作。

    Magento 配置中的
  1. unsecure base url 需要包含 "https"

  2. Turpentine 必须为 ESI 使用 HTTP URL,而不是 HTTPS。此提交中显示了必要的更改:

https://github.com/eth8505/magento-turpentine/commit/575f499382217f0013eaf097fd79ceddec0b4381