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 basisauthentificatie van HTTP. 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 root voorrechten zijn ingegaan.

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-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 aan OpenSearchvoor meer informatie.

Deze sectie bespreekt hoe te om nginx als onveilige volmacht te vormen zodat Adobe Commerce een onderzoeksmotor kan gebruiken die op deze server loopt. Deze sectie bespreekt vestigingHTTP Basis geen authentificatie; dat in Veilige mededeling met nginxwordt besproken.

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 uw globale /etc/nginx/nginx.conf de volgende regel bevat, zodat de andere configuratiebestanden die in de volgende secties worden besproken, worden geladen:

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. Gebruik een teksteditor om een bestand /etc/nginx/conf.d/magento_es_auth.conf met de volgende inhoud te maken:

    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-none
    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

Deze sectie bespreekt hoe te opstelling de Basisauthentificatie van HTTPmet uw veilige volmacht. Als u TLS en HTTP Basic-verificatie gebruikt, kan niemand communicatie met Elasticsearch of OpenSearch of met uw toepassingsserver onderscheppen.

Omdat nginx nationaal authentificatie steunt van HTTP Basis, adviseren wij het over, bijvoorbeeld, de authentificatie van de Samenvatting, die niet in productie wordt geadviseerd.

Aanvullende bronnen:

Zie de volgende secties voor meer informatie:

Een wachtwoord maken

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

Een wachtwoord maken:

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

    code language-bash
    which htpasswd
    

    Als een pad wordt weergegeven, wordt dit geïnstalleerd. Als de opdracht geen uitvoer retourneert, wordt htpasswd niet geïnstalleerd.

  2. Indien nodig installeert u htpasswd :

    • Ubuntu: apt-get -y install apache2-utils
    • CentOS: yum -y install httpd-tools
  3. Maak een map /etc/nginx/passwd waarin wachtwoorden worden opgeslagen:

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

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

Toegang tot nginx instellen

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

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

Gebruik een teksteditor om /etc/nginx/conf.d/magento_es_auth.conf (onbeveiligd) of het beveiligde serverblok met de volgende inhoud te wijzigen:

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. Gebruik een teksteditor om een bestand /etc/nginx/auth/magento_elasticsearch.conf met de volgende inhoud te maken:

    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 -opdracht gebruiken om te verifiëren dat u een gebruikersnaam en wachtwoord moet invoeren om de clusterstatus op te halen
  • HTTP Basic-verificatie configureren in de beheerfunctie

Een opdracht curl gebruiken om de 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 de motorconfiguratie van het Onderzoekworden besproken behalve klik Yes van de Enable HTTP Auth lijst en ga uw gebruikersbenaming en wachtwoord op de verstrekte gebieden in.

Klik op Test Connection om te controleren of 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