Я пытаюсь применить лак на моем веб-сайте с поддержкой SSL. Но я получаю перенаправление цикла. Вот как я иду
лак слушает 80 порт;
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
и бэкэнд
backend default {
.host = "127.0.0.1";
.port = "8080";
.connect_timeout = 16s;
.first_byte_timeout = 96s;
.between_bytes_timeout = 8s;
}
nginx работает на 8080. конфигурация nginx
upstream backend {
ip_hash;
server 127.0.0.1:80; # IP goes here.
}
server {
listen 443 ssl;
server_name example.com www.example.com;
root /var/www/test/public;
index index.php;
ssl_certificate /var/www/ascacacaa1341.crt;
ssl_certificate_key /var/www/www.example.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?$query_string;
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Secure on;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/test/public$fastcgi_script_name;
}
location /var/www/test/public {
autoindex on;
autoindex_exact_size off;
}
# We don't need .ht files with nginx.
location ~ /\.htaccess {
deny all;
}
# Set header expirations on per-project basis
location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff)$ {
expires 365d;
}
}
server {
listen 8080;
server_name example.com www.example.com;
return https://$server_name$request_uri;
}
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30700/nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30479/varnishd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 30700/nginx
tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 30475/varnishd
tcp6 0 0 :::80 :::* LISTEN 30479/varnishd
curl response curl -I -k https://www.domain.com
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.6.2
Date: Mon, 03 Nov 2014 10:38:31 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: https://www.domain.com/
X-Varnish: 623340 361289
Age: 280
Via: 1.1 varnish-v4
Это хорошо работает для ssl. перенаправление прокси не работает. Я перенаправляюсь на порт 80, где слушает лак. Но все же я получаю перенаправление цикла. от осмотра я нахожу net :: ERR_TOO_MANY_REDIRECTS. ошибка. Любой, кто может здесь помочь. На этом же сервере у меня больше доменов и поддоменов. Но я не буду применять лак только на ssl-домене.
Проблема в том:
server_name www.example.com example.com
...
location / {
rewrite ^ https://$server_name$request_uri permanent;
}
Вы отвечаете на домен www.example.com
и example.com
запросы на порт 8080 и перенаправление на www.example.com
так как server_name
всегда будет соответствовать первому server_name
значение, пока вы готовы отвечать на запросы https для example.com
.
Поэтому измените этот блок сервера на:
server {
listen 8080;
server_name example.com www.example.com;
return https://$server_name$request_uri;
}
Кстати, перестаньте использовать rewrite / regex, когда вам это не нужно.