2016-10-26 9 views
0

Cookie、nginx、およびバックエンドサーバーに問題があります。クッキーはnginxで要求に応じて送信されません

私は何を達成したいことは、このようなものです:

NGINX AT PORT 70 
location/{ 
If session cookie is not set 
return 301 localhost/login.html 
else 
proxy_pass http://somewhere 
} 
location /login.html{ 
proxy_pass http://localhost:8080 <- backend server with logging at localhost:8080/login.html 
} 
location /redirection/ { 
return 301 localhost:70 
} 

ので、それは私がlocalhostを得るように、ロギングサーバにパスをlogin.htmlとし、プロキシに行く必要があります:8080/login.htmlとをすることができそれから、資格情報を処理し、/リダイレクト/フォームアクションでリダイレクトします(処理はJavaScriptで行われます - 実際は現在はクッキーのみを設定しています)。リダイレクション後にサーバーは自分自身にリクエストを送信する必要がありますが、今はセッションクッキーを持っていますので、http://somewhereになります。

しかし、私の問題は、login.htmlではCookieを設定する必要がありますが、そうでないことです。 私はlocalhost:8080/login.htmlだけで試してみると、クッキーはうまくいきます。しかし、何とかproxy_passのクッキーが失われます。

P.私が2つのサーバーブロックと/login.htmlを使用し、/リダイレクトがこの2番目のサーバーにある場合、正常に動作しますが、私の構成に2つのサーバーブロックを持つことはできません。

+1

'return 301' - 本当に悪い考えです。それは302でなければならない –

答えて

0

まあ...私はこの問題を解決しました。 私はそれが私のクッキーを設定するjsスクリプトだと言ったように。しかし、jsスクリプトは "/"の位置にまっすぐ進むのでロードされていないようです。私がしたことは次のとおりです:

location /js/ { 
proxy_pass http://localhost:8080; 
} 

このすべてが機能しています。

バックエンドサーバーのhtmlファイルにcss/jsファイルが含まれている場合は、そのことを考慮する必要があります。

関連する問題