Cette rubrique explique comment utiliser Nginx en tant que serveur proxy inverse et le mode proxy pour collecter les journaux des serveurs sur site dans Simple Log Service.
Prérequis
Un projet et un Logstore doivent être créés. Pour plus d'informations, consultez les rubriques Gestion des projets et Création d'un Logstore de base.
Logtail version 1.5.0 ou ultérieure est installé sur votre serveur Linux, ou Logtail version 1.5.0.0 ou ultérieure est installé sur votre serveur Windows. Pour plus d'informations, consultez les rubriques Installation de Logtail sur un serveur Linux et Installation de Logtail sur un serveur Windows.
Contexte
Pour collecter les journaux des serveurs sur site qui ne disposent pas d'accès à Internet public, utilisez le mode proxy. Ce mode permet à un serveur disposant d'un accès Internet public d'agir comme un proxy inverse, en transférant les journaux d'autres serveurs vers Simple Log Service.
Fonctionnement
Logtail échange des données de contrôle, de service et de surveillance avec Simple Log Service. Les données de contrôle incluent des informations telles que la distribution de la configuration Logtail et l'authentification. Cette communication utilise HTTP et HTTPS, les données de service et de surveillance étant envoyées via HTTP par défaut. Par conséquent, le serveur proxy doit gérer le trafic HTTP et HTTPS.
Nginx est un serveur proxy HTTP open source haute performance. Il prend nativement en charge la mise en proxy du trafic HTTP, mais ne peut pas directement mettre en proxy le trafic HTTPS en raison de facteurs tels que l'authentification. Pour activer la mise en proxy HTTPS, vous devez appliquer un correctif HTTPS à Nginx.
Étape 1 : Configuration du serveur proxy
Utilisez Nginx pour configurer un serveur sur site disposant d'un accès Internet public en tant que serveur proxy inverse.
Connectez-vous à la machine qui servira de serveur proxy inverse.
-
Téléchargez Nginx et le correctif HTTPS.
-
Téléchargez le correctif HTTPS.
git clone https://github.com/chobits/ngx_http_proxy_connect_module.git -
Téléchargez et décompressez Nginx.
Remplacez ${version} par votre version de Nginx. Pour obtenir la dernière version, consultez la page nginx: download.
wget http://nginx.org/download/nginx-${version}.tar.gz tar -xzvf nginx-${version}.tar.gz cd nginx-${version}/
-
-
Appliquez le correctif HTTPS à Nginx.
Dans la commande, ${patchfile} correspond au chemin du fichier. Sélectionnez le fichier correspondant à votre version de Nginx. Pour plus d'informations, consultez la page Select patch.
patch -p1 < ../ngx_http_proxy_connect_module/patch/${patchfile}.patch -
Installez Nginx.
./configure --add-module=../ngx_http_proxy_connect_module make && make install -
Ajoutez la configuration suivante au fichier nginx.conf.
Remplacez ${proxy_server_listening_port} et ${dns_server_address} par vos valeurs réelles.
server { listen ${proxy_server_listening_port}; resolver ${dns_server_address}; # Used to specify the proxy for non-HTTP requests. proxy_connect; proxy_connect_allow 443; proxy_connect_connect_timeout 10s; proxy_connect_data_timeout 10s; # Used to specify the proxy for HTTP requests. location / { proxy_pass http://$host; proxy_set_header Host $host; } } Démarrez le serveur Nginx.
Étape 2 : Définition des variables d'environnement liées au proxy
Systèmes Linux
Vous pouvez utiliser l'une des deux méthodes suivantes pour définir les variables d'environnement liées au proxy.
|
Méthode |
Avantages |
Inconvénients |
Cas d'utilisation |
|
Méthode 1 |
La configuration n'affecte que le processus Logtail et a un impact minimal. |
La configuration est relativement complexe. |
Idéale pour les utilisateurs qui ne maîtrisent pas la configuration réseau globale du serveur. |
|
Méthode 2 |
La configuration est simple. |
Cette configuration à l'échelle du serveur a un impact plus large. |
Idéale pour les administrateurs de serveur qui comprennent parfaitement les modèles de requêtes réseau de tous les processus sur le serveur. |
Méthode 1
Connectez-vous à un serveur sur site.
-
Ouvrez le fichier
/etc/init.d/ilogtaild, ajoutez la variable d'environnement requise à la fonctionstart(), puis enregistrez le fichier.Pour plus d'informations sur les variables d'environnement, consultez la section Annexe : Variables d'environnement de proxyAnnexe : Variables d'environnement de proxy.
start() { cd $BIN_DIR umask $UMASK # Add the proxy-related environment variable before $BIN_DIR/ilogtail. # This example uses ALL_PROXY. Assume the proxy server IP address is 192.168.1.0 and the listening port is 9000. # The on-premises server communicates with the proxy server over HTTP. ALL_PROXY=http://192.168.1.0:9000 $BIN_DIR/ilogtail RETVAL=$? } -
Exécutez la commande suivante pour redémarrer Logtail.
/etc/init.d/ilogtaild restart Répétez les étapes 1Connectez-vous à un serveur sur site. à 3Exécutez la commande suivante pour redémarrer Logtail. /etc/init.d/ilogtaild restart pour définir les variables d'environnement liées au proxy sur d'autres serveurs sur site.
Méthode 2
N'utilisez cette méthode que si vous souhaitez mettre en proxy toutes les requêtes réseau sur le serveur sur site, ou si vous souhaitez mettre en proxy uniquement les requêtes Logtail et que vous comprenez parfaitement le comportement réseau des autres processus sur le serveur. Dans le cas contraire, utilisez la méthode 1.
Connectez-vous à un serveur sur site.
-
Utilisez la commande
exportpour ajouter la variable d'environnement liée au proxy au fichier de démarrage~/.bash_profileou/etc/profile.Pour plus d'informations sur les variables d'environnement, consultez la section Annexe : Variables d'environnement de proxyAnnexe : Variables d'environnement de proxy.
-
Exécutez la commande suivante pour appliquer la variable d'environnement.
Cet exemple utilise le fichier de démarrage
~/.bash_profile.source ~/.bash_profile -
Exécutez la commande suivante pour redémarrer Logtail.
/etc/init.d/ilogtaild restart Répétez les étapes 1Connectez-vous à un serveur sur site. à 4Collecte de journaux depuis des serveurs sur site pour configurer les variables d'environnement liées au proxy sur d'autres serveurs sur site.
Systèmes Windows
Ouvrez la fenêtre Running, saisissez regedit, puis cliquez sur OK.
Dans la fenêtre Registry Editor, accédez à Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\LogtailDaemon, puis cliquez sur LogtailDaemon.
Cliquez avec le bouton droit, sélectionnez , puis nommez la nouvelle valeur Environment.
-
Double-cliquez sur Environment. Dans la zone de texte Value data, saisissez la variable d'environnement liée au proxy, puis cliquez sur OK.
Cet exemple utilise ALL_PROXY. L'adresse IP du serveur proxy est 192.168.1.0 et le port d'écoute est 9000. Le serveur sur site communique avec le serveur proxy via HTTP. Pour plus d'informations sur les variables d'environnement, consultez la section Annexe : Variables d'environnement de proxyAnnexe : Variables d'environnement de proxy. Par exemple, saisissez
ALL_PROXY=http://192.168.1.0:9000. Ouvrez la fenêtre Running, saisissez services.msc, puis cliquez sur OK.
-
Dans la fenêtre Service, recherchez le service Logtail.
Pour Logtail 0.x.x.x, sélectionnez le service LogtailWorker.
Pour Logtail 1.0.0.0 ou version ultérieure, sélectionnez le service LogtailDaemon.
Cliquez avec le bouton droit sur le service et sélectionnez Restart.
Étape 3 : Vérification de la connectivité réseau
Connectez-vous à un serveur sur site.
-
Exécutez les commandes suivantes.
Dans les commandes suivantes, ${region} correspond à la région de votre projet et ${project_name} au nom de votre projet. Remplacez-les par les valeurs réelles.
curl http://logtail.${region}.log.aliyuncs.com curl https://logtail.${region}.log.aliyuncs.com curl http://${project_name}.${region}.log.aliyuncs.com curl http://ali-${region}-sls-admin.${region}.log.aliyuncs.comSi une réponse similaire à la suivante est renvoyée, la connexion réseau fonctionne correctement.
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"62591BC7C08B7BD4AA99FCD4"}} Répétez les étapes 1Connectez-vous à un serveur sur site. et 2Exécutez les commandes suivantes. Dans les commandes suivantes, ${region} correspond à la région de votre projet et ${project_name} au nom de votre projet. Remplacez-les par les valeurs réelles. curl http://logtail.${region}.log.aliyuncs.com curl https://logtail.${region}.log.aliyuncs.com curl http://${project_name}.${region}.log.aliyuncs.com curl http://ali-${region}-sls-admin.${region}.log.aliyuncs.com Si une réponse similaire à la suivante est renvoyée, la connexion réseau fonctionne correctement. {"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"62591BC7C08B7BD4AA99FCD4"}} pour vérifier la connexion réseau des autres serveurs sur site.
Annexe : Variables d'environnement de proxy
Vous pouvez spécifier ces variables d'environnement en minuscules, mais les variables en majuscules sont prioritaires.
-
Pour envoyer tout le trafic HTTP et HTTPS vers le même serveur proxy, ajoutez la variable d'environnement
ALL_PROXY.ALL_PROXY=${address_of_the_forward_proxy_server} -
Pour envoyer le trafic HTTP et HTTPS vers des serveurs proxy différents, ajoutez les variables d'environnement
HTTP_PROXYetHTTPS_PROXY.HTTP_PROXY=${address_of_the_server_that_proxies_HTTP_traffic} HTTPS_PROXY=${address_of_the_server_that_proxies_HTTPS_traffic}L'adresse du serveur proxy doit être au format
[protocol://[username:password@]]address[:port].protocol (facultatif) : Spécifie le protocole de communication entre le serveur sur site et le serveur proxy. Les valeurs valides sont http, https et socks5. Si vous ne définissez pas ce paramètre, http est utilisé par défaut.
username et password (facultatifs) : Les identifiants pour se connecter au serveur proxy.
address (obligatoire) : L'adresse IP du serveur proxy.
port (facultatif) : Le port d'écoute du serveur proxy que vous avez configuré dans le fichier nginx.conf. Pour plus d'informations, consultez l'étape 5Ajoutez la configuration suivante au fichier nginx.conf. Remplacez ${proxy_server_listening_port} et ${dns_server_address} par vos valeurs réelles. server { listen ${proxy_server_listening_port}; resolver ${dns_server_address}; # Used to specify the proxy for non-HTTP requests. proxy_connect; proxy_connect_allow 443; proxy_connect_connect_timeout 10s; proxy_connect_data_timeout 10s; # Used to specify the proxy for HTTP requests. location / { proxy_pass http://$host; proxy_set_header Host $host; } } de la section « Étape 1 : Configuration du serveur proxy ». Si ce paramètre est omis, le port 80 est utilisé par défaut.
Vous pouvez également ajouter la variable d'environnement NO_PROXY pour spécifier les destinations qui doivent contourner le serveur proxy. Séparez plusieurs adresses par des virgules (,). Les formats pris en charge incluent :
Adresse IP
Un point initial (.) correspond au domaine et à ses sous-domaines.
(désactive le proxy pour toutes les destinations)