2016-02-12 2 views
0

Я использую Ghost (0.7.6) в VPS с использованием Nginx (1.8.1). Чтобы обеспечить безопасность страницы панели и входа, я принудительно применяю любой запрос на использование HTTPS при доступе к таким страницам (например, /ghost страница). Но для любого запроса на любую другую страницу (например, для доступа к самому блогу Ghost) я хочу заставить его использовать HTTP. Призрак прослушивает 127.0.0.1:2368.ERR_TOO_MANY_REDIRECTS при настройке Ghost + Nginx с HTTP и HTTPS

Как ни странно, результат не так, что я ожидал: Каждый раз, когда я получить доступ к своему блогу (скажем, гиперссылка является a.b), он говорит, что мой сайт имеет ERR_TOO_MANY_REDIRECTS и перенаправляет между http://a.b и https://a.b (или между http://a.b/signin и https://a.b/signin). НО, когда я обращаюсь к панели управления администратора (https://a.b/ghost или http://a.b/ghost), он действует как ожидалось (без ошибок, правильно перенаправляет использование HTTPS).

Любая помощь? Конфигурация

Мои Nginx:

# Configuration for http://a.b 
server { 
    listen 80; 
    server_name a.b; 
    location ^~ /ghost { # /ghost should be accessed securely 
     return 301 https://$host$request_uri; 
    } 
    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header HOST $host; 
     proxy_set_header X-NginX-Proxy true; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass http://127.0.0.1:2368; 
    } 
} 

# Configuration for http://a.b 
server { 
    listen 443 ssl; 
    server_name a.b; 
    ssl_certificate ...; 
    ssl_certificate_key ...; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers '...'; 

    location ^~ /ghost { # /ghost should be accessed securely 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header HOST $host; 
     proxy_set_header X-NginX-Proxy true; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass http://127.0.0.1:2368; 
    } 
    location/{ # Force to use HTTP 
     return 301 http://$host$request_uri; 
    } 
} 

Любой вид помощи был бы оценен: ')

+0

Почему бы не просто включить HTTPS на всем сайте? Проще поддерживать, безопаснее для вас, быстрее для посетителей, если вы используете spdy или http2. – Tom

ответ

0

https://github.com/TryGhost/Ghost/issues/2796

location ^~ /ghost { # /ghost should be accessed securely 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header HOST $host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://127.0.0.1:2368; 
} 
Смежные вопросы