Redirecionamento SSL Nginx somente para uma página específica

4

Eu li e segui esta questão para poder configure o nginx para forçar o SSL para uma página (admin.php para XenForo), e ele está funcionando bem para alguns dos administradores do site, mas não para mim. Eu queria saber se alguém tem algum conselho sobre como melhorar essa configuração:

...

ssl_certificate      example.net.crt;
ssl_certificate_key  example.key;

server {
    listen 80 default;
    listen 443 ssl;

    server_name www.example.net example.net;
    access_log /srv/www/example.net/logs/access.log;
    error_log /srv/www/example.net/logs/error.log;

    root /srv/www/example.net/public_html;

    location / {
        if ( $scheme = https ){
            return 301 http://example.net$request_uri;
        }
        try_files $uri $uri/ /index.php?$uri&$args;
        index index.php index.html;
    }

    location ^~ /admin.php {
        if ( $scheme = http ) {
            return 301 https://example.net$request_uri;
        }
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS on;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

...

Parece que as informações extras no bloco location ^~ /admin.php não são necessárias. Alguém sabe de uma maneira fácil de evitar códigos duplicados? Sem ele, ele ignora o bloco php e apenas retorna os arquivos php.

Atualmente, ele aplica https corretamente no Firefox quando eu navego para admin.php . No Chrome, ele faz o download da página admin.php . Ao retornar ao site não https no Firefox, ele não retorna corretamente para http, mas permanece como SSL. Como eu disse anteriormente, isso só acontece comigo, os outros administradores podem ir e voltar sem problemas.

Este é um problema que posso consertar? E alguém sabe de alguma maneira que eu poderia reduzir opções de configuração duplicadas na configuração? Obrigado antecipadamente!

EDIT: Limpar o cache / cookies pareceu funcionar. Este é o caminho certo para fazer o redirecionamento http / https? Eu meio que inventei o que fiz.

    
por jjiceman 03.06.2012 / 05:56

2 respostas

0

ways I could reduce duplicate configuration options in the configuration

Possivelmente usando a localização nomeada @. Consulte doc .

    
por 03.06.2012 / 13:36
0

Isso pode estar relacionado a um bug explicado aqui link

O que eu recomendo que você use são blocos HTTP / HTTPS específicos, por exemplo

server {
  listen 80;
  server_name www.example.net example.net;

  return 301 https://$server_name$request_uri;
}
server {
  listen 443 ssl;

  server_name www.example.net example.net;
  access_log /srv/www/example.net/logs/access.log;
  error_log /srv/www/example.net/logs/error.log;

  root /srv/www/example.net/public_html;

  location / {
    try_files $uri $uri/ /index.php?$uri&$args;
    index index.php index.html;
  }

  location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME 
        $document_root$fastcgi_script_name;
        }
  }
    
por 19.05.2018 / 18:06

Tags