Come posso dire a nginx di servire SSL solo per un dominio?

Sì, questo è qualcosa di duplicato a questa domanda , tuttavia, secondo il documento ngnx " Configurazione dei server HTTPS " (sezione "Single HTTPS Server"), questa limitazione non esiste più e la risposta a quella domanda non è più valida .

Dal link di cui sopra:

Prima dello 0.7.14 SSL non poteva essere abilitato selettivamente per singole prese d'ascolto, come mostrato in precedenza. SSL potrebbe essere abilitato solo per l'integer server utilizzando la direttiva ssl, rendendo imansible impostare un singolo server HTTP / HTTPS. Il parametro ssl della direttiva di ascolto è stato aggiunto per risolvere questo problema. L'uso della direttiva ssl nelle versioni moderne è quindi scoraggiato.

Tuttavia, con il block server impostato come prescritto in quel documento:

server { listen *:80; listen 443 ssl; server_name example.com *.example.com; [...] 

nginx continuerà a servire il contenuto da example.com quando viene richiesta una richiesta per https://example.net .

Capisco che l'SSL sia servito prima della richiesta HTTP, ma deve essere in qualche modo impedito al server di rispondere a richieste SSL che non dispongono di un certificato SSL valido associato.

Qualsiasi intuizione su questo è molto apprezzata.

  • Impostare Apache2 su più directory server nello stesso dominio basato sul path URL
  • Wildcard vhosts su Nginx
  • Distriggersre errori e registri di accesso per un host virtuale
  • Utilizzo di un Apache VirtualHost per accedere ad un'istanza JS Node sullo stesso server
  • URL di reindirizzamento all'interno di Apache VirtualHost?
  • Nuovamente aggiunto virtualhost non funzionante, punti di dominio per / var / www /
  • Domini multipli Nginx
  • Perché Apache ignorare un host virtuale con un ServerName che corrisponda all'URL richiesto?
  • 2 Solutions collect form web for “Come posso dire a nginx di servire SSL solo per un dominio?”

    ci deve essere un modo per impedire al server di rispondere alle richieste SSL che non dispongono di un SSL valido associato a loro

    Beh, kinda. Poiché si dispone di più siti in esecuzione sullo stesso IP, un utente che tenta una connessione SSL a quel IP per uno qualsiasi dei siti , stabilirà sempre la sua connessione SSL (e potenzialmente riceverà un errore di certificato se indirizza un nome host che non è coperto dal cert).

    Tutto quello che puoi fare per impedire questo è di non avere l'ascolto SSL su quel IP (eseguire la roba SSL su indirizzi diversi).

    Se sei ok con loro get una connessione SSL con quel potenziale errore, allora hai opzioni dopo; invece di get il contenuto dal server SSL-enabled, si potrebbe avere un predefinito di get un errore 403 o un reindirizzamento all'elenco http per il nome host che hanno inviato la richiesta – una di queste opzioni avrebbe senso per il sistema ?

    se non esiste ssl per quel dominio otterrà l'errore ssl del browser e la connessione chiusa …
    Codice di errore: ERR_SPDY_PROTOCOL_ERROR

      server { listen 80; return 444; } server { listen 443; ssl_certificate /etc/ssl/my.crt; ssl_certificate_key /etc/ssl/my.key; return 444; } ## no SSL domain server { listen 80; server_name domain.com *.domain.com; } ## SSL domain server { listen 80; listen 443 spdy ssl; server_name SSLdomain.com *.SSLdomain.com; } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.