Magento + Turpentine + SSL仅生成HTTP URL

时间:2015-07-15 11:03:06

标签: magento ssl nginx varnish pound

我正在解决这个问题,所以我真的很感激一些帮助:/

我正在使用Turpentine和Magento 1.7 CE和Varnish 3,它工作正常。现在我想添加SSL加密,但效果不是很好。

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

我尝试将不安全的基本网址设置为https,但这完全破坏了我的网站(我有一个404“嵌入循环”,它从未停止加载)。

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

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 个答案:

答案 0 :(得分:1)

事实证明我有多个问题。

  1. nginx配置为“location /”:

    location / {
            try_files $uri $uri/ @handler;
    }
    
    location @handler {
            rewrite / /index.php;
    }
    
  2. 如果没有,那么没有ajax调用可以工作。

    1. Magento配置中不安全的基本网址需要包含“https”

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

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