Hoe Nginx Configureren Voor Zowel HTTP Als HTTPS?

Gepubliceerd 26 juli 2024

Probleem: Nginx configureren voor HTTP en HTTPS

Het opzetten van Nginx om HTTP- en HTTPS-verkeer te verwerken kan een uitdaging zijn. U moet de server configureren om op verschillende poorten te luisteren en SSL/TLS-certificaten te beheren, terwijl u ook de juiste omleiding tussen protocollen instelt.

Oplossing: Nginx-serverblok aanpassen voor ondersteuning van beide protocollen

Het Nginx-configuratiebestand aanpassen

Om Nginx in staat te stellen HTTP- en HTTPS-verkeer te verwerken, moet u uw serverblok-configuratie wijzigen. De belangrijkste wijzigingen omvatten:

  • Het verwijderen van de 'ssl on' directive: Deze directive dwingt SSL af voor alle verbindingen, wat problemen kan veroorzaken met HTTP-verzoeken.
  • Het instellen van afzonderlijke listen directives voor HTTP en HTTPS: Hierdoor kan de server verbindingen accepteren op poorten 80 (HTTP) en 443 (HTTPS).

Voorbeeld van een gecorrigeerd serverblok

Hier is een voorbeeld van een serverblok dat HTTP en HTTPS ondersteunt:

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/your/ssl_certificate.crt;
    ssl_certificate_key /path/to/your/ssl_certificate.key;

    # Other SSL settings...

    root /var/www/your_website;
    index index.html;

    # Other server configurations...
}

In deze configuratie:

  • De 'ssl on' directive is verwijderd.
  • Twee 'listen' directives worden gebruikt: één voor poort 80 (HTTP) en één voor poort 443 (HTTPS).
  • De 'ssl' parameter is toegevoegd aan de listen 443 directive, waardoor SSL alleen wordt ingeschakeld voor HTTPS-verbindingen.
  • SSL-certificaatpaden worden gespecificeerd met behulp van de ssl_certificate en ssl_certificate_key directives.

Deze wijzigingen stellen de server in staat om HTTP- en HTTPS-verzoeken correct te verwerken, waardoor de 400-fout voor HTTP-verzoeken wordt opgelost.

Tip: Test uw configuratie

Nadat u wijzigingen in uw Nginx-configuratie hebt aangebracht, test deze altijd voordat u de server opnieuw start. Gebruik het commando nginx -t om te controleren op syntaxfouten en mogelijke problemen. Dit helpt configuratiefouten te voorkomen die kunnen leiden tot serveruitval.