web-dev-qa-db-ja.com

Webmin:nginxリバースプロキシ経由でログインできません

ポート10000([サイトドメイン]:10000)の代わりに[サイトドメイン]/webminでwebminを実行するために、nginxを介してwebminのリバースプロキシを作成しました。

[サイトドメイン]/webminにアクセスすると、期待どおりにログインページが表示されますが、ログインしようとすると、ログインページがリロードされるだけです(エラーメッセージも成功もありません)。ログインページには、すべてのアセット(画像、jsなど)が適切にロードされています。

/var/webmin/miniserv.logを見て、私は見ています:
105.23.149.76 - - [26/Jul/2015:14:07:13 -0400] "POST //session_login.cgi HTTP/1.0" 401 2892

401(認証されていない)エラーステータスに注意してください。

リバースプロキシを設定する前に、成功したログインは次のようになりました。
145.23.98.124 - - [26/Jul/2015:13:34:38 -0400] "GET /admin/config/session_login.cgi HTTP/1.1" 401 2840 145.23.98.124 - root [26/Jul/2015:13:34:44 -0400] "POST /session_login.cgi HTTP/1.1" 200 871

私のシステム認証ログはログイン試行によってpingされないため、webminはPEMを介してログイン呼び出しさえしません(その前に停止されます)。

私のログでこの401エラーを説明できるもの、またはより一般的には、webminログインが機能しない原因を知っている人はいますか?

どうもありがとう!


nginx config:

server {
        listen 443 ssl;
        server_name site.example.com;
        ssl on;

        ssl_certificate [ssl cert].crt;
        ssl_certificate_key [ssl key].key;
        ssl_protocols [ssl protocols];
        ssl_ciphers [ssl ciphers];

        location /webmin {
            proxy_redirect http://127.0.0.1:10000/ https://site.example.com/webmin/;
            proxy_pass http://127.0.0.1:10000/;
            proxy_set_header Host $Host:$server_port;
        }
}
1
BBB

この解決策を試してください、それは私のためにうまく機能します:

/etc/webmin/config

webprefix=/webmin
webprefixnoredir=1
relative_redir=0   # pay attention on this
referer=www.examle.com

/etc/webmin/miniserv.conf

cookiepath=/webmin

nginx config:

location /webmin/ { 
    proxy_pass http://localhost:10000/;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

追加しないproxy_set_header Host $Host;を追加すると、動作しません。

Webminは http://www.examle.com/webmin/ で利用できるはずです

ソース

1
Orion

お使いのWebブラウザーが問題のあるログインページを自然にキャッシュしている、および/またはログインページに返されるヘッダーが正しくないようです。

ページの読み込み速度を確認してください。ログインしてログインボタンを押したときに、ログイン画面が最初にロードされたときと比べてロード時間がとてつもなく速い場合、前のページがキャッシュされてからリロードされていることがわかります。

この問題を一時的に回避するには、すべての形式のキャッシュを無効にし、Cookieを有効にするようにWebブラウザーを構成します。

また、ログインが成功した後にページが要求されたときに、Cookie値が使用されなかった可能性もあります。これにより、すべてのユーザーがゲストと同じコンテンツを見ることになります。

より技術的になりたい場合は、CURLなどの高度なコマンドラインツールを使用して各リクエストでHTTPヘッダーを検索するか、webpagetest.orgが特にページタイミングで役立つ場合があります。検索する最も重要なヘッダーは次のとおりです。

Set-Cookie

ログインボタンが選択され、正しい資格情報が使用されると、ブラウザに返されるレスポンスには、ユーザーがログインしていることを示すSet-Cookieを含むHTTPヘッダーが含まれている必要があります。同じブラウザに同じサイトが読み込まれると、Cookieがサーバーに送信され、ユーザーが以前に既にログインしたことが示されます。

また、サーバーリクエストがログに記録される可能性を高めたい場合は、しばらくキャッシュをオフにしてテストを行ってください。特にページに常に同じ画像が含まれている場合は、いくつかのエントリが繰り返し表示されることがあります。

0
Mike