Konfigurera Nginx för sökmotorn
I det här avsnittet beskrivs ett exempel på hur du säkrar kommunikationen mellan webbservern och sökmotorn (Elasticsearch eller OpenSearch) med en kombination av TLS-kryptering och grundläggande HTTP-autentisering. Du kan även konfigurera andra typer av autentisering. Vi tillhandahåller referenser för den informationen.
(En äldre term, Secure Sockets Layer (SSL), används ofta som synonymer med TLS. I det här avsnittet hänvisar vi till TLS.)
root
-behörighet.Recommendations
Vi rekommenderar följande:
-
Din webbserver använder TLS.
TLS ligger utanför det här ämnesområdet, men vi rekommenderar starkt att du använder ett riktigt certifikat i produktionen och inte ett självsignerat certifikat.
-
Sökmotorn körs på samma värd som en webbserver. Det här avsnittet gäller inte för körning av sökmotorn och webbservern på olika värdar.
Fördelen med att lägga sökmotorn och webbservern på samma värd är att det inte går att fånga upp krypterad kommunikation. Sökmotorns webbserver behöver inte vara samma som Adobe Commerce webbserver. Adobe Commerce kan till exempel köra Apache och Elasticsearch/OpenSearch kan köra nginx.
Om sökmotorn exponeras för den offentliga webben bör du konfigurera autentiseringen. Om sökmotorinstansen är skyddad i nätverket behöver du inte göra det. Samarbeta med din värdleverantör för att ta reda på vilka säkerhetsåtgärder du bör vidta för att skydda din instans.
Mer information om TLS
Se någon av följande resurser:
-
Apache
-
Nginx
Konfigurera en proxy
I det här avsnittet beskrivs hur du konfigurerar nginx som en osäker -proxy så att Adobe Commerce kan använda en sökmotor som körs på den här servern. I det här avsnittet beskrivs inte konfigurering av grundläggande HTTP-autentisering. Det beskrivs i Säker kommunikation med nginx.
Ange ytterligare konfigurationsfiler i den globala konfigurationen
Kontrollera att din globala /etc/nginx/nginx.conf
innehåller följande rad så att den läser in de andra konfigurationsfilerna som beskrivs i följande avsnitt:
include /etc/nginx/conf.d/*.conf;
Konfigurera nginx som proxy
I det här avsnittet beskrivs hur du anger vilka som ska få åtkomst till Nginx-servern.
-
Använd en textredigerare för att skapa filen
/etc/nginx/conf.d/magento_es_auth.conf
med följande innehåll:code language-conf server { listen 8080; location /_cluster/health { proxy_pass http://localhost:9200/_cluster/health; } }
-
Starta om nginx:
code language-bash service nginx restart
-
Kontrollera att proxyn fungerar genom att ange följande kommando:
code language-bash curl -i http://localhost:<proxy port>/_cluster/health
Om din proxy till exempel använder port 8080:
code language-bash curl -i http://localhost:8080/_cluster/health
Meddelanden som liknar följande för att visa om det lyckades:
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}
Säker kommunikation med nginx
I det här avsnittet beskrivs hur du konfigurerar grundläggande HTTP-autentisering med din säkra proxy. Användning av TLS och HTTP Basic-autentisering tillsammans förhindrar alla från att kommunicera med Elasticsearch eller OpenSearch eller med programservern.
Eftersom ursprungligt stöd för grundläggande HTTP-autentisering rekommenderas det, till exempel Sammanfattad autentisering, som inte rekommenderas i produktionen.
Ytterligare resurser:
Mer information finns i följande avsnitt:
Skapa ett lösenord
Vi rekommenderar att du använder Apache htpasswd
-kommandot för att koda lösenord för en användare som har åtkomst till Elasticsearch eller OpenSearch (som heter magento_elasticsearch
i det här exemplet).
Skapa ett lösenord:
-
Ange följande kommando för att avgöra om
htpasswd
redan är installerat:code language-bash which htpasswd
Om en sökväg visas installeras den. Om kommandot inte returnerar några utdata installeras inte
htpasswd
. -
Installera
htpasswd
om det behövs:- Ubuntu:
apt-get -y install apache2-utils
- CentOS:
yum -y install httpd-tools
- Ubuntu:
-
Skapa en
/etc/nginx/passwd
-katalog för att lagra lösenord:code language-bash mkdir -p /etc/nginx/passwd
code language-bash htpasswd -c /etc/nginx/passwd/.<filename> <username>
note warning WARNING Av säkerhetsskäl bör <filename>
döljas, dvs. den måste börja med en punkt. -
(valfritt). Om du vill lägga till en annan användare i lösenordsfilen anger du samma kommando utan alternativet
-c
(skapa):code language-bash htpasswd /etc/nginx/passwd/.<filename> <username>
-
Kontrollera att innehållet i
/etc/nginx/passwd
är korrekt.
Konfigurera åtkomst till nginx
I det här avsnittet beskrivs hur du anger vilka som ska få åtkomst till Nginx-servern.
Använd en textredigerare för att ändra antingen /etc/nginx/conf.d/magento_es_auth.conf
(osäkert) eller ditt säkra serverblock med följande innehåll:
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;
}
Konfigurera en begränsad kontext för sökmotorn
I det här avsnittet beskrivs hur du anger vilka som får åtkomst till sökmotorservern.
-
Ange följande kommando för att skapa en katalog där autentiseringskonfigurationen ska lagras:
code language-bash mkdir /etc/nginx/auth/
-
Använd en textredigerare för att skapa filen
/etc/nginx/auth/magento_elasticsearch.conf
med följande innehåll: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; }
-
Om du har konfigurerat en säker proxy tar du bort
/etc/nginx/conf.d/magento_es_auth.conf
. -
Starta om nästa och fortsätt med nästa avsnitt:
code language-bash service nginx restart
Verifiera
I det här avsnittet beskrivs två sätt att verifiera att grundläggande HTTP-autentisering fungerar:
- Använd ett
curl
-kommando för att verifiera att du måste ange ett användarnamn och lösenord för att få klusterstatus - Konfigurera grundläggande HTTP-autentisering i administratören
Använd ett curl
-kommando för att verifiera klusterstatus
Ange följande kommando:
curl -i http://<hostname, ip, or localhost>:<proxy port>/_cluster/health
Om du till exempel anger kommandot på sökmotorservern och proxyn använder port 8080:
curl -i http://localhost:8080/_cluster/health
Följande meddelande visas för att ange att autentiseringen misslyckades:
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>
Prova följande kommando:
curl -i -u <username>:<password> http://<hostname, ip, or localhost>:<proxy port>/_cluster/health
Exempel:
curl -i -u magento_elasticsearch:mypassword http://localhost:8080/_cluster/health
Den här gången lyckas kommandot med ett meddelande som liknar följande:
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}
Konfigurera grundläggande HTTP-autentisering i administratören
Utför samma uppgifter som beskrivs i Sökmotorkonfigurationen förutom att klicka Yes i listan Enable HTTP Auth och ange ditt användarnamn och lösenord i de angivna fälten.
Klicka på Test Connection för att kontrollera att den fungerar och klicka sedan på Save Config.
Du måste tömma cachen och indexera om innan du fortsätter.