Я покажу вам мои собственные файлы конфигурации Nginx, чтобы это работало. Это Debian 9, а не Centos 7, но Nginx должен работать точно так же.
Если у кого-то есть лучшая конфигурация или советы, я внимательно выслушаю ... Я разработчик Magento, а не системный администратор. Мне нужно многое узнать о Nginx и Varnish.
Здесь Varnish прослушивает порт 6081.
- Я создал прокси-сервер Varnish для перенаправления запросов HTTPS на лак HTTP. В 1_ :
## 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;
}
}
- Затем мой vhost в
/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 Cache
Теперь нажмите на новый файл «Конфигурация лака».
Установите Access list
и Backend host
на localhost. Я не знаю, какие еще варианты.
Сохранить изменения конфигурации
Нажмите Export VCL
в соответствии с версией вашего Varnish
Загрузите Magento VCL
Сделайте резервную копию лака 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;
}
...
Иногда вам придется обрабатывать особые случаи, такие как отключение Varnish для некоторых URL-адресов.
Перейдите в свой /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;
}
...
}
person
Antoine Martin
schedule
08.02.2019