Le problème d'affichage du journal après le déploiement de Tornado via le proxy inverse nginx
PHPz
PHPz 2017-05-16 17:29:30
0
2
822

Après avoir déployé l'application tornado en utilisant la configuration nginx ci-dessous

upstream frontends {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
    }

Toutes les requêtes IP demandées dans tornado.log seront affichées comme 127.0.0.1, similaire à ce qui suit
[I 130125 21:44:54 web:1447] 200 GET / (127.0.0.1) 16.00ms

Comment faire en sorte que l'adresse IP dans tornado.log s'affiche comme la véritable IP lors de l'utilisation du proxy inverse nginx ?

Réponse correcte : en plus de la configuration correcte de nginx, plus important encore, xheaders=True doit être défini dans le serveur http tornado
tornado.httpserver.HTTPServer(Application(), xheaders=True)

PHPz
PHPz

学习是最好的投资!

répondre à tous(2)
大家讲道理

Peut être dépassé en tornade

self.request.remote_ip

Pour l'obtenir, mais il peut parfois y avoir quelques problèmes, voir ce numéro sur github : https://github.com/facebook/tornado/i...

Le principe est de lire certains en-têtes HTTP

De même, l'implémentation en PHP est la suivante :

function _get_client_ip() {
    $clientip = '';
    if(getenv('HTTP_CLIENT_IP')
        && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $clientip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR')
        && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $clientip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR')
        && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $clientip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR'])
        && $_SERVER['REMOTE_ADDR']
        && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $clientip = $_SERVER['REMOTE_ADDR'];
    }

    preg_match("/[\d\.]{7,15}/", $clientip, $clientipmatches);
    $clientip = $clientipmatches[0] ? $clientipmatches[0] : 'unknown';
    return $clientip;
}
滿天的星座

S'il s'agit d'un proxy inverse, vous pouvez ajouter une telle configuration à nginx :
proxy_pass http://frontends;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Hôte $http_host;

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!