Récemment, j'ai rencontré un problème lors de l'utilisation du service de proxy inverse nginx, à savoir que je souhaite spécifier l'adresse IP source pour réaliser le transfert des requêtes, mais je n'ai pas trouvé de meilleure solution. Après quelques explorations et pratiques, j'ai résumé quelques expériences et astuces que j'espère partager avec vous.
Le proxy inverse nginx consiste à recevoir des requêtes sur Internet par l'intermédiaire d'un serveur proxy, puis à transmettre ces requêtes à un serveur sur le réseau interne et à retransmettre le contenu renvoyé par le serveur au client de la requête Internet. L'adresse IP source est l'adresse IP réelle du client qui fait la demande.
La configuration du proxy inverse nginx pour spécifier une adresse IP nécessite les considérations suivantes :
Comment obtenir l'adresse IP réelle du client ?
Configuration du proxy inverse nginx
Spécifier le transfert de l'adresse IP source
Obtenir l'adresse IP réelle du client
Dans le proxy inverse de nginx, la présence du serveur proxy aura pour effet de masquer l'adresse IP de la requête originale, et nous devons donc obtenir l'adresse IP réelle du client par le biais de certains champs d'en-tête spéciaux. Dans la configuration de nginx, nous pouvons transmettre l'adresse IP réelle du client au serveur dorsal en définissant certains champs de l'en-tête de la requête http. La configuration spécifique est la suivante :
"`nginx
serveur {
écouter 80.
nom_du_serveur exemple.com.
emplacement / {
proxy_pass http://backend_server.
proxy_set_header X-Real-IP $remote_addr.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
}
}
“`
Dans la configuration ci-dessus, nous avons défini deux champs d'en-tête http, X-Real-IP et X-Forwarded-For, via la directive proxy_set_header pour transmettre l'adresse IP réelle du client et l'adresse IP du serveur proxy, respectivement.
Configuration du proxy inverse nginx
La configuration du reverse proxy de nginx est très simple, il suffit d'ajouter une directive proxy_pass au fichier de configuration de nginx. Voici un exemple simple :
"`nginx
serveur {
écouter 80.
nom_du_serveur exemple.com.
emplacement / {
proxy_pass http://backend_server.
}
}
“`
Dans la configuration ci-dessus, nous avons transmis la requête du client pour example.com au serveur backend via un proxy inverse.
Spécifier le transfert de l'adresse IP source
Pour mettre en œuvre la redirection avec une adresse IP source spécifiée, nous pouvons utiliser le module nginx ngx_http_realip_module pour modifier l'adresse IP source de la requête. La configuration spécifique est la suivante :
"`nginx
set_real_ip_from 192.168.1.0/24.
real_ip_header X-Real-IP.
real_ip_recursive on ;
“`
Dans la configuration ci-dessus, nous spécifions le segment de réseau où l'adresse IP source est autorisée à être modifiée via la directive set_real_ip_from, puis nous spécifions le champ d'en-tête HTTP de l'adresse IP source à modifier via la directive real_ip_header. Enfin, la directive real_ip_recursive est utilisée pour activer la recherche récursive des requêtes du serveur proxy afin de garantir que l'adresse IP réelle du client est correctement obtenue.
résumés
Avec la configuration et les paramètres ci-dessus, nous pouvons réaliser la redirection de l'adresse IP source spécifiée dans le proxy inverse nginx. Tout d'abord, nous obtenons l'adresse IP réelle du client en définissant le champ d'en-tête http, puis nous configurons le reverse proxy et utilisons le module ngx_http_realip_module pour réaliser la redirection de l'adresse IP source spécifiée. J'espère que l'expérience et les conseils ci-dessus vous seront utiles.