forçar nginx ssl com porta

2

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;
}
    
por zentenk 13.02.2012 / 15:16

3 respostas

3

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.

    
por 13.02.2012 / 15:21
3

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:

por 15.02.2012 / 16:36
1

É 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;
    }
    
por 27.06.2014 / 17:57

Tags