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.)
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:
-
Apache
-
Nginx
Een proxy instellen
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.
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.
-
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; } }
-
Nginx opnieuw starten:
code language-bash service nginx restart
-
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:
-
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. -
Indien nodig installeert u
htpasswd
:- Ubuntu:
apt-get -y install apache2-utils
- CentOS:
yum -y install httpd-tools
- Ubuntu:
-
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. -
(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>
-
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.
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;
}
Een beperkte context instellen voor het zoekprogramma
In deze sectie wordt besproken hoe u kunt opgeven wie toegang heeft tot de zoekmachineserver.
-
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/
-
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; }
-
Als u een veilige proxy instelt, verwijdert u
/etc/nginx/conf.d/magento_es_auth.conf
. -
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.