Nginx voor uw zoekmachine configureren

Dit onderwerp bespreekt een voorbeeld om communicatie tussen uw Webserver en onderzoeksmotor (Elasticsearch of OpenSearch) te beveiligen gebruikend een combinatie van de encryptie van de Veiligheid van de Laag van het Vervoer (TLS) en HTTP-basisverificatie. U kunt naar keuze andere soorten authentificatie eveneens vormen; wij verstrekken verwijzingen voor die informatie.

(Een oudere termijn, de Veilige Laag van Contactdozen (SSL), wordt vaak gebruikt onderling verwisselbaar met TLS. In dit onderwerp verwijzen wij naar TLS.)

WARNING
Tenzij anders vermeld, moeten alle bevelen in dit onderwerp als gebruiker met zijn ingegaan root rechten.

Recommendations

We raden het volgende aan:

  • De webserver gebruikt TLS.

    TLS valt buiten het bereik van dit onderwerp. Wij raden u echter ten zeerste aan een echt certificaat te gebruiken in productie en niet een zelfondertekend certificaat.

  • De zoekmachine werkt op dezelfde host als een webserver. Het runnen van de onderzoeksmotor en de Webserver op verschillende gastheren is voorbij het werkingsgebied van dit onderwerp.

    Het voordeel van het plaatsen van zoekmachine en de webserver op dezelfde host is dat gecodeerde communicatie hierdoor niet kan worden onderschept. De webserver van het zoekprogramma hoeft niet hetzelfde te zijn als de Adobe Commerce- of Magento Open Source-webserver. Adobe Commerce kan bijvoorbeeld Apache uitvoeren en Elasticsearch/OpenSearch kan nginx uitvoeren.

    Als de zoekmachine wordt blootgesteld aan het openbare web, moet u verificatie configureren. Als uw zoekmachine-instantie binnen uw netwerk is beveiligd, is dit mogelijk niet nodig. Werk met uw hostingprovider om te bepalen welke beveiligingsmaatregelen u moet implementeren om uw instantie te beschermen.

Meer informatie over TLS

Zie een van de volgende bronnen:

Een proxy instellen

NOTE
Ondersteuning voor OpenSearch is toegevoegd in 2.4.4. OpenSearch is een compatibele Elasticsearch. Zie Elasticsearch migreren naar OpenSearch voor meer informatie .

Deze sectie bespreekt hoe te om nginx als een te vormen onveilig zodat Adobe Commerce een zoekprogramma kan gebruiken dat op deze server wordt uitgevoerd. In deze sectie wordt het instellen van de HTTP Basic-verificatie niet besproken. Dit wordt besproken in Beveiligde communicatie met nginx.

NOTE
De reden dat de proxy in dit voorbeeld niet is beveiligd, is dat het makkelijker is om een proxy in te stellen en te verifiëren. U kunt TLS desgewenst gebruiken met deze proxy. Hiervoor moet u de proxygegevens toevoegen aan de configuratie van het beveiligde serverblok.

Geef aanvullende configuratiebestanden op in uw algemene configuratie

Zorg ervoor dat je global /etc/nginx/nginx.conf bevat de volgende lijn zodat laadt het de andere configuratiedossiers die in de volgende secties worden besproken:

include /etc/nginx/conf.d/*.conf;

Index instellen als proxy

In deze sectie wordt besproken hoe u kunt opgeven wie toegang heeft tot de nginx-server.

  1. Een teksteditor gebruiken om een bestand te maken /etc/nginx/conf.d/magento_es_auth.conf met de volgende inhoud:

    code language-conf
    server {
       listen 8080;
       location /_cluster/health {
          proxy_pass http://localhost:9200/_cluster/health;
       }
    }
    
  2. Nginx opnieuw starten:

    code language-bash
    service nginx restart
    
  3. Verifieer de volmachtswerken door het volgende bevel in te gaan:

    code language-bash
    curl -i http://localhost:<proxy port>/_cluster/health
    

    Als uw proxy bijvoorbeeld poort 8080 gebruikt:

    code language-bash
    curl -i http://localhost:8080/_cluster/health
    

    Berichten die op de volgende vertoning lijken om op succes te wijzen:

    code language-terminal
    HTTP/1.1 200 OK
    Date: Tue, 23 Feb 2019 20:38:03 GMT
    Content-Type: application/json; charset=UTF-8
    Content-Length: 389
    Connection: keep-alive
    
    {"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":5,"active_shards":5,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":5,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":50.0}
    

Beveiligde communicatie met nginx

In deze sectie wordt beschreven hoe u de installatie instelt HTTP Basic-verificatie met uw veilige proxy. Als u TLS en HTTP Basic-verificatie gebruikt, kan niemand communicatie met Elasticsearch of OpenSearch of met uw toepassingsserver onderscheppen.

Omdat nginx native de Basisauthentificatie van HTTP steunt, adviseren wij het over, bijvoorbeeld Digest-verificatie, wat niet wordt aanbevolen in de productie.

Aanvullende bronnen:

Zie de volgende secties voor meer informatie:

Een wachtwoord maken

We raden je aan de Apache te gebruiken htpasswd gebruiken om wachtwoorden te coderen voor een gebruiker met toegang tot Elasticsearch of OpenSearch (benoemd magento_elasticsearch in dit voorbeeld).

Een wachtwoord maken:

  1. Voer de volgende opdracht in om te bepalen of htpasswd is al geïnstalleerd:

    code language-bash
    which htpasswd
    

    Als een pad wordt weergegeven, wordt het geïnstalleerd; als de opdracht geen uitvoer retourneert, htpasswd is niet geïnstalleerd.

  2. Indien nodig, installeren htpasswd:

    • Ubuntu: apt-get -y install apache2-utils
    • CentOS: yum -y install httpd-tools
  3. Een /etc/nginx/passwd directory voor het opslaan van wachtwoorden:

    code language-bash
    mkdir -p /etc/nginx/passwd
    
    code language-bash
    htpasswd -c /etc/nginx/passwd/.<filename> <username>
    
    note warning
    WARNING
    Om veiligheidsredenen <filename> moet verborgen zijn, dat wil zeggen dat het moet beginnen met een periode.
  4. (Optioneel). Als u nog een gebruiker aan het wachtwoordbestand wilt toevoegen, voert u dezelfde opdracht in zonder de opdracht -c (maken) optie:

    code language-bash
    htpasswd /etc/nginx/passwd/.<filename> <username>
    
  5. Controleren of de inhoud van /etc/nginx/passwd is correct.

Toegang tot nginx instellen

In deze sectie wordt besproken hoe u kunt opgeven wie toegang heeft tot de nginx-server.

WARNING
Het weergegeven voorbeeld is voor een onveilig proxy. Als u een veilige proxy wilt gebruiken, voegt u de volgende inhoud (behalve de listen-poort) toe aan uw beveiligde serverblok.

Een teksteditor gebruiken om een van deze te wijzigen /etc/nginx/conf.d/magento_es_auth.conf (niet veilig) of uw beveiligde serverblok met de volgende inhoud:

server {
  listen 8080;
  server_name 127.0.0.1;

  location / {
   limit_except HEAD {
      auth_basic "Restricted";
      auth_basic_user_file  /etc/nginx/passwd/.htpasswd_magento_elasticsearch;
   }
   proxy_pass http://127.0.0.1:9200;
   proxy_redirect off;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /_aliases {
   auth_basic "Restricted";
   auth_basic_user_file  /etc/nginx/passwd/.htpasswd_magento_elasticsearch;
   proxy_pass http://127.0.0.1:9200;
   proxy_redirect off;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  include /etc/nginx/auth/*.conf;
}
NOTE
De luisterpoort van de zoekmachine die in het voorgaande voorbeeld wordt weergegeven, is alleen voorbeelden. Om veiligheidsredenen raden we u aan een niet-standaard listen poort te gebruiken.

Een beperkte context instellen voor het zoekprogramma

In deze sectie wordt besproken hoe u kunt opgeven wie toegang heeft tot de zoekmachineserver.

  1. Ga het volgende bevel in om een folder tot stand te brengen om de authentificatieconfiguratie op te slaan:

    code language-bash
    mkdir /etc/nginx/auth/
    
  2. Een teksteditor gebruiken om een bestand te maken /etc/nginx/auth/magento_elasticsearch.conf met de volgende inhoud:

    code language-conf
    location /elasticsearch {
    auth_basic "Restricted - elasticsearch";
    auth_basic_user_file /etc/nginx/passwd/.htpasswd_magento_elasticsearch;
    
    proxy_pass http://127.0.0.1:9200;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
  3. Als u een veilige proxy instelt, verwijdert u /etc/nginx/conf.d/magento_es_auth.conf.

  4. Start de engine opnieuw en ga verder met de volgende sectie:

    code language-bash
    service nginx restart
    

Verifiëren

Deze sectie bespreekt twee manieren om te verifiëren dat de Basisauthentificatie van HTTP werkt:

  • Een curl om te verifiëren moet u een gebruikersbenaming en wachtwoord ingaan om clusterstatus te krijgen
  • HTTP Basic-verificatie configureren in de beheerfunctie

Een curl bevel om clusterstatus te verifiëren

Voer de volgende opdracht in:

curl -i http://<hostname, ip, or localhost>:<proxy port>/_cluster/health

Bijvoorbeeld, als u het bevel op de server van de onderzoeksmotor ingaat en uw volmacht gebruikt haven 8080:

curl -i http://localhost:8080/_cluster/health

Het volgende bericht geeft aan dat verificatie is mislukt:

HTTP/1.1 401 Unauthorized
Date: Tue, 23 Feb 2016 20:35:29 GMT
Content-Type: text/html
Content-Length: 194
Connection: keep-alive
WWW-Authenticate: Basic realm="Restricted"
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
  <center><h1>401 Authorization Required</h1></center>
</body>
</html>

Probeer nu het volgende bevel:

curl -i -u <username>:<password> http://<hostname, ip, or localhost>:<proxy port>/_cluster/health

Bijvoorbeeld:

curl -i -u magento_elasticsearch:mypassword http://localhost:8080/_cluster/health

Dit keer slaagt het bevel met een bericht gelijkend op het volgende:

HTTP/1.1 200 OK
Date: Tue, 23 Feb 2016 20:38:03 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 389
Connection: keep-alive
{"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":5,"active_shards":5,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":5,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":50.0}

HTTP Basic-verificatie configureren in de beheerfunctie

Voer de zelfde taken uit zoals die in worden besproken Configuratie van zoekmachine behalve klikken Yes van de Enable HTTP Auth en voer uw gebruikersnaam en wachtwoord in de opgegeven velden in.

Klikken Test Connection om ervoor te zorgen dat het werkt en klik vervolgens op Save Config.

U moet de cache leegmaken en opnieuw indexeren voordat u verdergaat.

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995