Heim >Backend-Entwicklung >PHP-Tutorial >Lösen Sie das Problem des Sitzungsverlusts von Proxy_Pass zu Tomcat in Nginx

Lösen Sie das Problem des Sitzungsverlusts von Proxy_Pass zu Tomcat in Nginx

WBOY
WBOYOriginal
2016-08-08 09:21:521330Durchsuche

Einführung

Ich habe immer nginx1.5.7 als Webserver und Proxyserver verwendet, der einem Tomcat entspricht, also einem Port und nur einem Domänennamen.
Heute habe ich Tomcat auf dem Server integriert. Fünf Anwendungen teilen sich einen Tomcat.
Das erste Problem besteht darin, dass eine Ausnahme auftritt, wenn der Benutzer darauf wartet, in den Hintergrund zu gelangen, und die angemeldeten Benutzerinformationen nicht gefunden werden können!
Nach dem Debuggen wurde festgestellt, dass die Anforderung mehrfach war und die Sitzungen inkonsistent waren. Es fühlte sich an, als würde ein anderer Browser zugreifen, und wir kamen zu dem Schluss, dass die Sitzung verloren gehen musste!

Ursache

Nach sorgfältiger Analyse kamen wir zu dem Schluss: Das Problem liegt in der Konfiguration von Nginx!

<code>server_name  www<span>.</span>weixin4j<span>.</span>org;
charset utf<span>-</span><span>8</span>;
root   /opt/apache<span>-tomcat</span><span>-</span><span>7.0</span><span>.53</span>/webapps/weixin4j<span>/</span>;
location <span>/</span> {
    proxy_pass         http:<span>//127.0.0.1:8180/weixin4j/;</span>
    proxy_set_header   Host             <span>$host</span>;
    proxy_set_header   X<span>-Real</span><span>-IP</span><span>$remote_addr</span>;
    proxy_set_header   X<span>-Forwarded</span><span>-For</span><span>$proxy_add_x_forwarded_for</span>;
}</code>

Diese Konfiguration führt dazu, dass der Cookie-Speicherort nicht auf „/“ basiert, sodass die Sitzung beim zweiten Besuch neu erstellt wird und die Informationen in der Sitzung verloren gehen.

Lösung

Ändern Sie den Cookie-Speicherpfad

<code>server_name  www<span>.</span>weixin4j<span>.</span>org;
charset utf<span>-</span><span>8</span>;
root   /opt/apache<span>-tomcat</span><span>-</span><span>7.0</span><span>.53</span>/webapps/weixin4j<span>/</span>;
location <span>/</span> {
    proxy_pass         http:<span>//127.0.0.1:8180/weixin4j/;</span>
    proxy_set_header   Host             <span>$host</span>;
    proxy_set_header   X<span>-Real</span><span>-IP</span><span>$remote_addr</span>;
    proxy_set_header   X<span>-Forwarded</span><span>-For</span><span>$proxy_add_x_forwarded_for</span>;
    add_header From www<span>.</span>weixin4j<span>.</span>org;
    proxy_cookie_path /weixin4j<span>/</span><span>/</span>;
    proxy_set_header Cookie <span>$http_cookie</span>;
}</code>

Starten Sie den Dienst neu und testen Sie ihn!
passieren!

Das Obige stellt vor, wie man das Problem des Sitzungsverlusts von Proxy_Pass zu Tomcat in Nginx löst, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn