Não é possível lidar com solicitações SSL e não SSL em uma única porta. Você precisará usar uma segunda porta para a versão SSL, se desejar veicular ambos no mesmo domínio.
Estou tentando forçar o redirecionamento de SSL, mas meu domínio tem uma porta assim domain.com:8888
O seguinte não parece estar funcionando, agora nem consigo acessar o site se adicionar o rewrite
server {
listen 8888;
server_name sy-system.net;
rewrite ^ https://$server_name:8888$request_uri? permanent;
ssl on;
ssl_certificate /path/to/certs/domain.pem;
ssl_certificate_key /path/to/certs/domain.key;
}
Não é possível lidar com solicitações SSL e não SSL em uma única porta. Você precisará usar uma segunda porta para a versão SSL, se desejar veicular ambos no mesmo domínio.
Existem duas maneiras de fazer isso, através de um bloco de servidor HTTP HTTP duplo ou usando dois blocos de servidor (preferencial) Isso usa um bloco de servidor para escutar a porta 8888 e a porta SSL padrão 443.
# Server accepts 8888 and SSL but redirects to HTTPS when no SSL protocol used
server {
listen 8888; # usually 80
listen 443 ssl;
server_name example.com; # replace example.com with your domain name
ssl on;
ssl_certificate /path/to/certs/domain.pem;
ssl_certificate_key /path/to/certs/domain.key;
if ($ssl_protocol = "") {
rewrite (.*) https://$server_name$1 permanent;
}
}
Existe outra maneira que evita instruções if dividindo o servidor em dois blocos.
# SSL Site
server {
listen 443 ssl;
server_name example.com; # replace example.com with your domain name
ssl on;
ssl_certificate /path/to/certs/domain.pem;
ssl_certificate_key /path/to/certs/domain.key;
}
# Non-SSL Site
server {
listen 8888; # usually 80
server_name example.com; # replace example.com with your domain name
rewrite (.*) https://$server_name$1 permanent;
}
Por favor, note que estes não foram testados desde que eu use portas padrão (80.443), mas inferidas da leitura da documentação. Você também pode querer incluir o endereço IP na instrução listen, pois o SSL deve estar vinculado a um IP dedicado de qualquer maneira.
Fontes:
É possivel. Se você precisar, você está usando a porta no uri:
server {
listen 8888 ssl; # listen for ipv4; this line is default and implied
ssl on;
ssl_certificate /path/to/certs/domain.pem;
ssl_certificate_key /path/to/certs/domain.key;
error_page 497 https://$server_name:8888$request_uri;
}
sem porta em uriL
server {
listen 8888 ssl;
ssl on;
ssl_certificate /path/to/certs/domain.pem;
ssl_certificate_key /path/to/certs/domain.key;
error_page 497 https://$server_name$request_uri;
}