Este tema explica cómo utilizar Nginx como servidor proxy directo y en modo proxy para recopilar registros de servidores locales en Simple Log Service.
Requisitos previos
Debe haber creado un Project y un logstore. Para obtener más información, consulte Manage Projects y Create a basic Logstore.
Logtail 1.5.0 o posterior está instalado en su servidor Linux, o bien Logtail 1.5.0.0 o posterior está instalado en su servidor Windows. Para obtener más información, consulte Install Logtail on a Linux server y Install Logtail on a Windows server.
Contexto
Para recopilar registros de servidores locales que no tienen acceso a Internet público, utilice el modo proxy. Este modo permite que un servidor con acceso a Internet público actúe como proxy directo y reenvíe los registros de otros servidores a Simple Log Service.
Funcionamiento
Logtail intercambia datos de control, servicio y monitoreo con Simple Log Service. Los datos de control incluyen información como la entrega de configuración de Logtail y la autenticación. Esta comunicación utiliza HTTP y HTTPS; los datos de servicio y monitoreo se envían mediante HTTP de forma predeterminada. Por lo tanto, el servidor proxy debe gestionar tanto el tráfico HTTP como el HTTPS.
Nginx es un servidor proxy HTTP de código abierto y alto rendimiento. Admite de forma nativa el tráfico HTTP, pero no puede gestionar directamente el tráfico HTTPS debido a factores como la autenticación. Para habilitar el proxy HTTPS, debe aplicar un parche HTTPS a Nginx.
Paso 1: Configurar el servidor proxy
Utilice Nginx para configurar un servidor local con acceso a Internet público como servidor proxy directo.
Inicie sesión en la máquina que funcionará como servidor proxy directo.
-
Descargue Nginx y el parche HTTPS.
-
Descargue el parche HTTPS.
git clone https://github.com/chobits/ngx_http_proxy_connect_module.git -
Descargue y descomprima Nginx.
Reemplace ${version} con su versión de Nginx. Para obtener la versión más reciente, consulte nginx: download.
wget http://nginx.org/download/nginx-${version}.tar.gz tar -xzvf nginx-${version}.tar.gz cd nginx-${version}/
-
-
Aplique el parche HTTPS a Nginx.
En el comando, ${patchfile} es la ruta del archivo. Seleccione el archivo que corresponda a su versión de Nginx. Para obtener más información, consulte Select patch.
patch -p1 < ../ngx_http_proxy_connect_module/patch/${patchfile}.patch -
Instale Nginx.
./configure --add-module=../ngx_http_proxy_connect_module make && make install -
Agregue la siguiente configuración al archivo nginx.conf.
Reemplace ${proxy_server_listening_port} y ${dns_server_address} con sus valores reales.
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; } } Inicie el servidor Nginx.
Paso 2: Establecer variables de entorno relacionadas con el proxy
Sistemas Linux
Puede utilizar uno de dos métodos para establecer las variables de entorno relacionadas con el proxy.
|
Método |
Ventajas |
Desventajas |
Caso de uso |
|
Método 1 |
La configuración afecta únicamente al proceso de Logtail y tiene un impacto mínimo. |
La configuración es relativamente compleja. |
Ideal para usuarios que no están familiarizados con la configuración general de red del servidor. |
|
Método 2 |
La configuración es sencilla. |
Esta configuración a nivel de servidor tiene un impacto más amplio. |
Ideal para administradores de servidores que comprenden completamente los patrones de solicitud de red de todos los procesos en el servidor. |
Método 1
Inicie sesión en un servidor local.
-
Abra el archivo
/etc/init.d/ilogtaild, agregue la variable de entorno necesaria a la funciónstart()y guarde el archivo.Para obtener más información sobre las variables de entorno, consulte Appendix: Proxy environment variables.
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=$? } -
Ejecute el siguiente comando para reiniciar Logtail.
/etc/init.d/ilogtaild restart Repita los pasos 1 a 3 para establecer las variables de entorno relacionadas con el proxy en otros servidores locales.
Método 2
Utilice este método solo si desea aplicar proxy a todas las solicitudes de red del servidor local, o si desea aplicar proxy únicamente a las solicitudes de Logtail y comprende completamente el comportamiento de red de otros procesos en el servidor. De lo contrario, utilice el Método 1.
Inicie sesión en un servidor local.
-
Utilice el comando
exportpara agregar la variable de entorno relacionada con el proxy al archivo de inicio~/.bash_profileo/etc/profile.Para obtener más información sobre las variables de entorno, consulte Appendix: Proxy environment variables.
-
Ejecute el siguiente comando para aplicar la variable de entorno.
Este ejemplo utiliza el archivo de inicio
~/.bash_profile.source ~/.bash_profile -
Ejecute el siguiente comando para reiniciar Logtail.
/etc/init.d/ilogtaild restart Repita los pasos 1 a 4 para configurar las variables de entorno relacionadas con el proxy en otros servidores locales.
Sistemas Windows
Abra la ventana Running, introduzca regedit y haga clic en OK.
En la ventana Registry Editor, vaya a Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\LogtailDaemon y haga clic en LogtailDaemon.
Haga clic derecho, seleccione y asigne al nuevo valor el nombre Environment.
-
Haga doble clic en Environment. En el cuadro de texto Value data, introduzca la variable de entorno relacionada con el proxy y haga clic en OK.
Este ejemplo utiliza ALL_PROXY. La dirección IP del servidor proxy es 192.168.1.0 y el puerto de escucha es 9000. El servidor local se comunica con el servidor proxy mediante HTTP. Para obtener más información sobre las variables de entorno, consulte Appendix: Proxy environment variables. Por ejemplo, introduzca
ALL_PROXY=http://192.168.1.0:9000. Abra la ventana Running, introduzca services.msc y haga clic en OK.
-
En la ventana Service, busque el servicio Logtail.
Para Logtail 0.x.x.x, seleccione el servicio LogtailWorker.
Para Logtail 1.0.0.0 o posterior, seleccione el servicio LogtailDaemon.
Haga clic derecho en el servicio y seleccione Restart.
Paso 3: Comprobar la conectividad de red
Inicie sesión en un servidor local.
-
Ejecute los siguientes comandos.
En los siguientes comandos, ${region} es la región de su Project y ${project_name} es el nombre de su Project. Reemplácelos con los valores reales.
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 se devuelve una respuesta similar a la siguiente, la conexión de red funciona correctamente.
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"62591BC7C08B7BD4AA99FCD4"}} Repita los pasos 1 y 2 para comprobar la conexión de red de otros servidores locales.
Apéndice: Variables de entorno de proxy
Puede especificar estas variables de entorno en minúsculas, pero las variables en mayúsculas tienen prioridad.
-
Para enviar todo el tráfico HTTP y HTTPS al mismo servidor proxy, agregue la variable de entorno
ALL_PROXY.ALL_PROXY=${address_of_the_forward_proxy_server} -
Para enviar tráfico HTTP y HTTPS a diferentes servidores proxy, agregue las variables de entorno
HTTP_PROXYyHTTPS_PROXY.HTTP_PROXY=${address_of_the_server_that_proxies_HTTP_traffic} HTTPS_PROXY=${address_of_the_server_that_proxies_HTTPS_traffic}La dirección del servidor proxy debe tener el formato
[protocol://[username:password@]]address[:port].protocol (opcional): Especifica el protocolo de comunicación entre el servidor local y el servidor proxy. Los valores válidos son http, https y socks5. Si no establece este parámetro, se utiliza http de forma predeterminada.
username y password (opcional): Las credenciales para iniciar sesión en el servidor proxy.
address (obligatorio): La dirección IP del servidor proxy.
port (opcional): El puerto de escucha del servidor proxy que configuró en el archivo nginx.conf. Para obtener más información, consulte el paso 5 en la sección "Paso 1: Configurar el servidor proxy". Si se omite este parámetro, se utiliza el puerto 80 de forma predeterminada.
También puede agregar la variable de entorno NO_PROXY para especificar destinos que deben omitir el servidor proxy. Separe varias direcciones con comas (,). Los formatos admitidos incluyen:
Dirección IP
Un punto inicial (.) coincide con el dominio y sus subdominios.
(deshabilita el proxy para todos los destinos)