gpt4 book ai didi

magento - 使用SSL在CentOS 7,Nginx和PHP-FPM上设置Varnish

转载 作者:行者123 更新时间:2023-12-03 17:46:14 27 4
gpt4 key购买 nike

我以前没有使用过 Varnish,但我需要在我们的 Magento 站点上安装它以帮助加快速度。

我找到了很多关于如何在 Centos 7、PHP-FPM 等上设置 Varnish 的文章,但没有一篇文章能在 CentOS7、Nginx、PHP-FPM SSL 上运行。
据我了解,Varnish 不能自然地与 SSL 一起使用,因此您需要做一些 Nginx jiggery-pokery 才能使事情正常工作。
这也是一个多商店的 Magento 站点,因此增加了另一层复杂性。

有没有人有任何信息可以帮助解决这个问题?

最佳答案

我将向您展示我自己的Nginx配置文件,以使其工作。这是Debian 9而不是Centos 7,但是Nginx应该以相同的方式工作。

如果有人有更好的配置或建议,我会精心聆听...我是Magento开发人员,而不是系统管理员。我对Nginx和Varnish有很多了解。

在这里,Varnish正在监听端口6081

  • 我创建了一个 Varnish代理来将HTTPS请求重定向到HTTP varnish。在/etc/nginx/sites-available/proxy.website.com中:

  • ## HTTPS termination & Varnish proxy
    server {

    server_name en.website.com fr.website.com es.website.com de.website.com;

    listen 443 ssl http2;


    access_log /var/www/log/varnish-proxy.log;
    error_log /var/www/log/varnish-proxy.error.log;

    include /etc/nginx/conf/ssl.conf;

    keepalive_timeout 300s;

    location / {
    #BYPASS VARNISH
    #proxy_pass http://127.0.0.1:611;
    #VARNISH ENABLED
    proxy_pass http://127.0.0.1:6081;

    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_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_set_header X-Forwarded-Port 443;
    proxy_set_header X-Secure on;
    proxy_set_header X-Magento-Debug 1;
    }
    }

  • 然后,我在/etc/nginx/sites-available/website.com中的虚拟主机:

  • upstream fastcgi_backend { # USE YOUR OWN CONFIG HERE
    # use tcp connection
    # server 127.0.0.1:9000;
    # or socket
    server unix:/var/run/php7.1-fpm.sock;
    }
    map $http_host $MAGE_RUN_CODE_GLOBAL { # USE YOUR OWN CONFIG HERE
    en.website.com en;
    fr.website.com fr;
    es.website.com es;
    de.website.com de;
    }

    # Redirect to https
    server {
    server_name en.website.com fr.website.com es.website.com de.website.com;
    listen 80;

    location ~ /.well-known {
    allow all;
    }

    return 301 https://$http_host$request_uri;
    }

    # Redirect to https
    server {
    server_name _;
    listen 611;

    set $MAGE_ROOT /var/www/magento;
    set $MAGE_MODE developer;
    set $MAGE_RUN_TYPE store;
    set $MAGE_RUN_CODE $MAGE_RUN_CODE_GLOBAL;

    set $HTTPS_FORWARD on;
    set $FPM_USER www-data;

    access_log /var/www/log/website.com.access.log;
    error_log /var/www/log/website.com.error.log error;

    include /var/www/magento/nginx.conf.sample;
    }
  • 启用您的虚拟主机

  • sudo ln -s /etc/nginx/sites-available/proxy.website.com /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/website.com /etc/nginx/sites-enabled/
  • 重新启动nginx。 -t将测试您的配置文件,-s reload将在不中断服务的情况下重新加载Nginx配置:

  • nginx -t && nginx -s reload

    编辑:
  • 编辑Varnish启动配置:
  • CentOS 6:/etc/sysconfig/varnish
  • CentOS 7:/etc/varnish/varnish.params
  • Debian/Ubuntu:/etc/default/varnish

  • ...
    ## Alternative 2, Configuration with VCL
    DAEMON_OPTS="-a :6081 \
    -T localhost:6082 \
    -f /etc/varnish/default.vcl \
    -S /etc/varnish/secret \
    -s malloc,1024m \
    -p workspace_backend=256 \
    -p http_resp_hdr_len=42000"
    ...
  • 在Magento管理中:
  • Stores > Configuration > Advanced > System > Full Page Cache > Caching Application设置为 Varnish 缓存
  • 现在关注新的“Varnish 配置”了
  • Access listBackend host设置为 localhost 。我不知道还有其他选择。
  • 保存配置更改
  • 根据您的 Varnish 的版本Clic Export VCL
  • 上传Magento VCL
  • 将默认 Varnish VCL /etc/varnish/default.vcl备份到/etc/varnish/default.vcl.bkp
  • 将magento VCL放入新的/etc/varnish/default.vcl文件中。
  • 编辑第一行:

  • vcl 4.0; import std;

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

    backend mywebsite {
    .host = "127.0.0.1";
    .port = "611";
    }

    acl purge {
    "localhost";
    }

    sub vcl_recv {

    if (req.http.host ~ "website.com") {
    set req.backend_hint = mywebsite;
    } else {
    set req.backend_hint = default;
    }

    ...
  • 有时,您将不得不处理一些特殊情况,例如对某些URL禁用Varnish。
  • 转到/etc/varnish/default.vcl并根据需要进行编辑。第一次看到VCL时,这很晦涩,但最后一点也不难理解。
  • 或以这种方式编辑您的 Varnish 代理:

  • ## HTTPS termination & Varnish proxy
    server {
    ...
    location ^~ /sitemap {
    #BYPASS VARNISH
    proxy_pass http://127.0.0.1:611;

    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_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_set_header X-Forwarded-Port 443;
    proxy_set_header X-Secure on;
    }
    ...
    }

    关于magento - 使用SSL在CentOS 7,Nginx和PHP-FPM上设置Varnish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54575191/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com