ways I could reduce duplicate configuration options in the configuration
Possivelmente usando a localização nomeada @. Consulte doc .
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.
ways I could reduce duplicate configuration options in the configuration
Possivelmente usando a localização nomeada @. Consulte doc .
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;
}
}