[ カテゴリー » PC関連 ]

MS純正OpenSSHをWindows Serverで使うと…

少なくとも以下の二つが、期待通りに動作してくれない。

  • HostKey設定。Could not load host keyと言われる。
  • Match UserもしくはChrootDirectory設定。Match Userで指定したユーザーでSFTPログインしたらC:¥が見えた。

OpenSSHのバージョンはv0.0.23.0Link 。2012 R2と2016で同じ結果。SFTPで接続したユーザーに/にいると思わせたいわけで。Cygwin使うか…。

— posted by mu at 08:52 pm   commentComment [0]  pingTrackBack [0]

画像付きメールを自動生成すると誤った表示をされる

C#でHTMLメールを自動送信するLink プログラム(*1)を書いて運用していたところ、Outlook 2013で表示される画像が時々刻々と変化しないなど明らかにおかしい。デバッグで同じ画像をプログラムを走らせるマシンのローカルに書き出すとそれぞれの画像は異なっている…

原因はHTMLメールのContent IDに'report.png'と毎回同じものを設定していたため。Outlookはこれらのメールを短時間で開くとキャッシュの画像を表示、変化しないように見えたようです。あ~疲れた。

(*1) 異常通知メールです。迷惑メールじゃないですよ (^_^;)

— posted by mu at 04:31 pm   commentComment [0]  pingTrackBack [0]

動作を勘違いしてました

自戒の意味を込めて記録。LINQで

の動作は違う。例えば{1, 2, -1, 3, 0}という配列に使った場合、前者の答えは3、後者は2。

前者の動作を後者と同じと思い込んでいたため、翌日大量のエラーに直面することに。

— posted by mu at 12:04 pm   commentComment [0]  pingTrackBack [0]

MySQLがDNSキャッシュをやっていた

いまさらネタ。

リモートクライアントマシンのIPアドレスを変更した後にアクセスしたら、IPアドレスの元持ち主マシンと判断されアクセス拒否。MySQLサーバのコマンドラインからnslookupで調べてもDNSは変更後のアドレスを正しく返しており、小一時間悩む。

原因はMySQL 5.6.5から入ったDNSキャッシュ(host_cache テーブル)Link 。mysqlコマンドからFLUSH HOSTSを実行して解決。

リモートクライアントがMySQLに接続するのはIPアドレス変更後初めてですが、変更してから1週間経つんだよなぁ。キャッシュはエントリ数の上限はあるようだけど、有効期限は無いかかなり長いらしい。

— posted by mu at 03:48 pm   commentComment [0]  pingTrackBack [0]

Jupyter NotebookをIISリバースプロキシで使う

[2017/5/17 追記] Pythonが動かない模様。ブラウザからはWebSocket接続に問題があるように見えますが…要調査。

Dockerなどで動かしているJupyter Notebookをリバースプロキシで/以外にマウントする方法。

まずはJupyterの設定変更。Docker運用でない方は直接jupyter_notebook_config.pyを編集してJupyterを再起動してください。

  1. docker ps -aでJupyterコンテナIDもしくはNAMEを調べる
  2. シェルに入る
  3. docker exec -it コンテナIDまたはNAME /bin/bash
  4. jupyter_notebook_config.py(/home/jovyan/.jupyter/jupyter_notebook_config.py)の設定に以下を追加。'jupyter'はリバースプロキシでマウントしたいパスと一致するように適当に変更。
  5. c.NotebookApp.base_url = '/jupyter/'
    
  6. シェルを抜ける
  7. Jupyterの再起動
  8. docker restart コンテナIDまたはNAME
    
これでJupyter Notebookがhttp://localhost:8888Link ではなくhttp://localhost:8888/jupyterLink でアクセスできるようになります。あとはURL書き換えなどを使ってWebサーバアドレスをlocalhost:8888に書き換える。IISのURL Rewriteの例だと
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
          <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
              <match url="jupyter/(.*)" />
              <conditions>
                <add input="{CACHE_URL}" pattern="^(https?)://" />
              </conditions>
              <action type="Rewrite" url="{C:1}://localhost:8888/{R:1}" />
            </rule>
          </rules>
          <outboundRules>
            <preConditions>
              <preCondition name="ResponseIsHtml1">
                <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
              </preCondition>
            </preConditions>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://localhost:8888/(.*)" />
              <action type="Rewrite" value="http{R:1}://Webサーバアドレス/{R:2}" />
            </rule>
          </outboundRules>
        </rewrite>
    </system.webServer>
    <system.web>
        <identity impersonate="false" />
    </system.web>
</configuration>

Jupyter・リバースプロキシで検索するとWebサーバの/にマウントする例がよくありました。私は/以外にマウントしたかったのですが、jupyter_notebook_config.py書き換え無しにIISのURL Rewriteだけで行おうとすると以下の点でハマりました。

  • '/foo/bar'のようにサーバ名を含まないURL表記も'/jupyter/foo/bar'と書き換えないといけないのですが、JavaScript内も変更するためfilterByTags="None"、つまりHTML全文を置換対象する必要があり、余計な部分にマッチしない正規表現にしないといけない。ルールが複雑になると、後のJupyter側の変更で不具合起こす可能性あり。
  • CSS内の'/foo/bar'も'/jupyter/foo/bar'に書き換えないといけない。
  • JupyterのログインフォームでNext=%2F(Next=/)という部分がありログイン成功後に進むページが指定されるのですが、ここを
    • 書き換えないとWebサーバー側の/に飛んでしまう
    • Next=%2Fjupyterなどと書き換えるとJupyterにとっては知らないパス/jupyterに飛べと指定されるのでエラーになる

私は3つ目の理由でURL Rewrite単独での解決は断念しました。

[参考]

— posted by mu at 01:51 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0344 sec.
prev
2022.1
next
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31