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:

  • Nginx auto minifica output html
  • Qual è la differenza tra le variables Nginx $ host, $ http_host e $ server_name?
  • Come creare il file del certificato .cer?
  • come eliminare il file singolo nginx cache?
  • consentire i caricamenti solo agli utenti autenticati (nginx + upload_module)
  • NGINX Proxy_Pass rimuove la sottostring url
  • 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.

  • Ottieni la distro e la versione dei server
  • Processo Linux è stato ucciso anche se la memory disponibile è sufficiente
  • Che cos'è il mdev e come i nodes / dev / * vengono creati in Linux?
  • Recupera l'attuale Kerberos KVNO da Active Directory
  • Lo stesso driver per più tabs di networking - il collo di bottiglia di performance?
  • Come get l'IPv6 funzionante?
  • 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.