Come eseguire nginx SSL su una porta non standard


15

Mi rendo conto che questo sembra un duplicato di almeno alcune altre domande, ma le ho lette più volte ogni volta e sto ancora facendo qualcosa di sbagliato.

Di seguito sono riportati i contenuti del mio file di configurazione nginx myexample.com che si trova in /etc/nginx/sites-available.

server {

  listen       443 ssl;
  listen       [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
      index index.html index.htm;

}

Funziona quando vado su https://myexample.com il contenuto è servito e la connessione è sicura. Quindi questa configurazione sembra essere buona.

Ora se cambio la porta ssl su 9443 e ricarico la configurazione nginx, la configurazione si ricarica senza errori, ma visitando https://myexample.com viene visualizzato un errore nel browser (Impossibile raggiungere questo sito / myexample.com si rifiuta di connetti. ERR_CONNECTION_REFUSED)

Ho provato suggerimenti e documentazione qui , qui e qui (tra gli altri) ma ottengo sempre l'errore ERR_CONNECTION_REFUSED.

Devo notare che posso usare una porta non standard e quindi digitare esplicitamente quella porta nell'URL, ad esempio https://myexample.com:9443 . Ma non voglio farlo. Quello che voglio è che un utente sia in grado di digitare myexample.com in qualsiasi browser e che reindirizzi automaticamente nginx alla connessione sicura.

Ancora una volta, non ho alcun problema quando utilizzo la porta SSL 443 standard.

Modifica: sto usando nginx / 1.6.2 su debian / jessie


1
lei ha detto che "Vorrei sottolineare che io posso utilizzare una porta non standard e quindi digitare esplicitamente che porta nell'URL, ad esempio, myexample.com:9443 ." Puoi spiegare come sei riuscito a farlo perché voglio accedere al mio sito Web utilizzando smth come " myexample.com:9443 " con SSL incluso
Ghassan Zein

Risposte:


22

Per supportare la digitazione di " https://myexample.com " nel tuo browser e averlo gestito dalla nginxconfigurazione in ascolto sulla porta 9443, avrai bisogno di un'ulteriore nginxconfigurazione che sia ancora in ascolto sulla porta 443, poiché quella è la porta IP per a cui si collega il browser .

Così:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  # Redirect the browser to our port 9443 config
  return 301 $scheme://myexample.com:9443$request_uri;
}

server {
  listen 9443 ssl;
  listen [::]:9443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
  index index.html index.htm;
}

Si noti che lo stesso certificato / chiave è necessario per entrambe le sezioni, poiché il certificato è generalmente legato al nome host DNS, ma non necessariamente alla porta.

Spero che sia di aiuto!


Questa è la risposta più completa, ma quello che penso che mi stai dicendo è che per reindirizzare automaticamente a una connessione sicura, nginx deve ancora essere associato alla porta 443. È questo il caso? Questo è il problema :-( Ho un altro processo associato a quella porta.
GojiraDeMonstah,

Nginx è un proxy inverso. Puoi farlo ascoltare su 443 e inoltrare le richieste all'applicazione appropriata.
Tim

Tim - hai ragione. Probabilmente ho fatto una vera domanda stupida, ma speravo che ci fosse un modo per cambiare "magicamente" la porta SSL.
GojiraDeMonstah,

@GojiraDeMonstah Se non si desidera utilizzare la porta 443, inserire il numero di porta scelto nell'URL. Questo è tutto.
Michael Hampton

La "ssl" era piuttosto importante. Ho avuto default_server prima e ho lottato con esso per un po 'di tempo.
Swateek,

0

Quando si digita https://example.com , lo standard per lo schema https: // è connettersi alla porta 443. Nel tuo caso, hai spostato il tuo server in modo che ora sia in ascolto sulla porta 9443. La connessione viene rifiutata messaggio per questo motivo: nulla è in ascolto sulla porta 443.

Sarà necessario disporre di qualcosa in ascolto sulla porta 443 che reindirizza le connessioni alla porta 9443 o utilizzare una porta come parte dell'URL.


-1

se si cambia la porta in una non standard come 9443, è necessario aggiungere un reindirizzamento da 443 a 9443. Impostare nginx per invertire il proxy su quella porta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.