多段リバースプロキシにおけるサイト内のURLの変換をnginxで行う
多段リバースプロキシにおけるサイト内のURLの変換をnginxで行う
多段リバースプロキシは、複数のリバースプロキシを組み合わせて利用することで、より高度な負荷分散やセキュリティ機能を実現する手法です。 しかし、多段リバースプロキシを使用する場合、サイト内のURLが正しく変換されないという問題が生じることがある。 この問題を解決するために、nginxを使用してサイト内のURLの変換を行う方法を紹介する。
背景
独自ドメインのサイトを運営する際に、複数のサイトを稼働させたい時がある。 この時バックエンドのサーバーにルーティングさせる際に パス(/site1, /site2)のように区切りたい。
しかし、nginxでルーティングした後のサーバーが受け取るパスパラメータはルーティングのための区切り文字を認識してしまう。 また、サイト内でリダイレクトがある場合はルーティングパスを無視して、移動してしまう問題もあった。
バックエンドのサーバーにはnginxのルーティングを意識させたくないので、なんとか設定できるようにした。
nginxを使用したURLの変換(リダイレクト)
http://192.168.1.74:8888がバックエンドのサーバとする。
/itemというパスがルーティングの識別子にしており、バックエンドがこれを認識したくない。
そのために、proxy_redirect / /item/; を追加して、バックエンドに送るパスから削除する。
また、ページ内リンクが不正になるので、これをsub_filterを使って、無理やり書き換える。
'src="/' 'src="/item/のように、サイト内リンクの場合バックスラッシュから始まるので、こいつにパスルーティングの値に変換する。
events { worker_connections 1024; } http { server { listen 80; server_name localhost; client_max_body_size 100M; location /item/ { proxy_pass http://192.168.1.74:8888/; proxy_redirect / /item/; sub_filter 'src="/' 'src="/item/'; # 画像のURLに /item を追加 sub_filter 'href="/' 'href="/item/'; # リンクのURLに /item を追加 sub_filter_once off; } } }
以上。
リポジトリ単位でgitの証明書(アカウント)を分割する方法
リポジトリ単位でgitの証明書(アカウント)を分割する方法
複数のgithubアカウントがあり、それぞれ同時に開発する際にアカウントを切り替えるのが面倒だったので、リポジトリ単位で自動的に任意のアカウントを使ってgithubと通信する方法を調べたので、まとめておく。
ディレクトリ構成
- .ssh/ config # このファイルにそれぞれのアカウントの証明書の参照先/ホスト名を書く - .gitconfig # メインのgitconfig - アカウントA/ - .gitconfig - アカウントB/ - .gitconfig
.ssh/config 証明書設定
以下のように入力して、アカウント毎にid_rsaの参照先を書く
host github-<アカウントA> HostName github.com IdentityFile ~/.ssh/id_rsa_<アカウントA> User git host github-<アカウントB> HostName github.com IdentityFile ~/.ssh/id_rsa_<アカウントB> User git
以下のようにホスト名を指定して、動作確認ができる。
# ssh -T github-<アカウントA> Hi HOGEHOGE! You've successfully authenticated, but GitHub does not provide shell access.
.gitconfig (メイン)
アカウントとリポジトリのディレクトリの対応付けをする。 アカウント単位でまずディレクトリを作成し、その中にリポジトリをクローンするとよさそう。
[includeIf "gitdir:~/volume/git/accountA/"] path = ~/volume/git/accountA/.gitconfig [includeIf "gitdir:~/volume/git/accountB/"] path = ~/volume/git/accountB/.gitconfig
実際にクローンする
後はgitクローンする際に 通常github.comと指定しているホスト名の部分を.ssh/configで記載したhostの値に置き換えるだけ。
git clone git@<変更したホスト名>:<リポジトリ>.git
以上。 今までアカウント切り替えをしてgit nameやemailを間違ってしまっていたが、この設定によって煩雑さが大きく解消された。
CentOS7 mDNSによるホスト名での名前解決を行う
CentOS7 LAN内でホスト名による名前解決を行いたい
Windowsだとホスト名によるpingコマンドが実行可能だったりするが、
これをLinuxでも行いたいが、うまくいかなかった。
これはLinuxでmDNSと呼ばれるマルチキャストによる名前解決機能がデフォルトではないためだ。
なお、Ubuntuではデフォルトで有効なため、これはRedhat(RHEL)やCentOSに限った話である。
備忘録として、設定手順をメモしておく。
ホスト名を設定する
以下でLinuxホストのホスト名を変更する。
なお、ホスト名にハイフン-が入る場合、名前解決のホスト名では省略されるので、注意。
hostnamectl set-hostname test_hostname1
mDNSのパッケージインストール
yum -y install avahi systemctl enable avahi-daemon yum install epel-release -y yum install nss-mdns -y reboot
ping で動作確認
無事ホスト名で疎通が取れた。
ホスト名に.localを付与する必要がある。
[root@test_hostname1~]# ping testhostname2.local PING testhostname1.local (192.168.56.105) 56(84) bytes of data. 64 bytes from 192.168.56.105 (192.168.56.105): icmp_seq=1 ttl=64 time=0.269 ms 64 bytes from 192.168.56.105 (192.168.56.105): icmp_seq=2 ttl=64 time=0.700 ms
Windows11でバッテリー稼働時間を表示する方法(BatteryBar)
Windows11のバッテリーアイコンで残駆動時間が見れない
Onemix4をWindows11にUpdateした。 この機種は高性能CPUを積んでいるので、バッテリーがあまり持たない。
なのでWindows10の頃は頻繁に残駆動時間が気になって確認していたのだが、Windows11は残りのパーセント%しか見ることができない。

今までのWindowsOSでは基本的に残稼働時間が表示されたので、 これは困る。精神衛生上よくない仕様だ。
Windows11 でバッテリー稼働時間を確認する方法
- システムを開く(Win + I)
- 電源&バッテリー
- 推定残り時間を確認
上記の方法で残駆動時間を確認することができる。
しかし毎回こんな面倒なことはやってられない。。。
もっと簡単に確認する方法
BatteryBarアプリケーションのフローティング機能
Windows11からはWindows10まで使えたタスクバーにツールを埋め込む機能が使用できない。 このため、この仕組み以外でモニタリングをする必要がある。
ページ下部にある"Try Basic Version"から無償版がダウンロード可能だ。


忘れずにFloating Toolbarにチェックを入れよう。
インストール後は以下のように表示される。

これで常時バッテリー稼働時間を表示することができた。
BatteryBarは以前から愛用しているソフトで、バッテリーの劣化率も確認できる。 Windows11のOSレベルで稼働時間をマウスオーバーで表示できるようになってほしいところだ。
ARM CPU搭載のWindowsノートPC
ARM CPU搭載のWindowsノートPC
最近ARMプロセッサの話題が多い。 特にAppleのM1プロセッサーの話題が多い。
MacBookはARMのM1プロセッサー
M1プロセッサーはワットパフォーマンスが非常に優れており、 高性能、低消費電力、低発熱だ。

このAppleの図を見ると、M1プロセッサーも最大のワット数が30W越えとそこそこ大きいことがわかる。
Intelのi7 1165G相当はありそうだ。

Appleは今までIntel CPUだったけど、ここでARM系プロセッサーに変えている。
アーキテクチャが変わるからそれなりのデメリットがあるはずだけど、それ以上のメリットがあるということだ。
問題としてあがるx86やx64のバイナリが実行できない件についてはRosettaをインストールすることで、動作されることが可能。
エミュレータとして動作するので、動作速度は気になるところだが、意外と早いらしい。
なのでx64が動くとなると特にデメリットもないので、意外とM1プロセッサーが市場に受け入れられたということか。
WindowsもARMで動かしたい。
実はWindows機にもARMプロセッサを搭載したものはある。 Surface Pro X だ。
価格:164,780円 |
![]()
このSurface Pro XはCPUとしてMicrosoft SQ2というものが搭載されている。
ベンチマークは passmarkの値を見たところ、しょぼすぎる。

Intel系のCPUどころか、まさかの Apple A13 Bionicに負けてる。
iPhoneのCPUにノートPCのCPUが負けているということで、こりゃダメ。
MicrosoftとQualcommとの独占契約があってWindowsには他社のARMプロセッサを搭載できないとかなんとか。
おすすめのARM CPU搭載WindowsノートPC
HP Elite Folio 最大21.1時間稼働
HP Elite Folio です。

CPUはQualcomm® Snapdragon™ 8cx Gen2搭載で、かなりベンチが良い。
Windows10での出荷だけど、Windows11へのアップデートが予告されている。
ARMプロセッサでx64の処理が可能
Windows11へのアップデートが予告されているので、HP Elite Folioはx64のエミュレータを利用することができる。
この点においてはApple M1プロセッサと同じだ。
問題はそのエミュレーションのパフォーマンスであって、これはぜひ実機で試してみたいもの。
ARMのPCには 軽い、電池持ちが良いを期待したいが、 HP Elite Folio は1.3kg級の 重いPC。
せっかくARMプロセッサを搭載するのに1.3kgもあったらIntelCPUのマシン買うかと。
まだWindows向けのARM搭載のPCが少ないので、高価な機種しかないが、今後は安くて扱いやすい機種が増えると嬉しい。
エルゴノミクスキーボード US配列あり
イケてるエルゴノミクスキーボード
私はエンジニアなので、一日中キーボードに触れており、わりと肩こりに悩まされている。
普段はHHKBを使っているが、セパレートタイプの分離型キーボードではないので、 型が内側に丸みがちだ。
以前セパレートタイプのキーボードを探したが、あるにはあるけど、US配列がなかったりして、購入までには至らなかった。

HHKBを複数もっているので、二台使って疑似セパレートキーボードのように使った時期もあるが、場所はとるし、ファンクションキーはキーボードを跨げないのでいまいちだった。
US配列のセパレート対応のエルゴノミクスキーボード
キネシス Freestyle Proキーボード
セパレートキーボードでなんとUS配列。 メカニカルキー採用だし、マクロ対応。
マクロ対応がいいですね。内部メモリに書き込めるようなので、業務で効率化を図りたいときに役立つと思います。
HHKBHybridはマクロ非対応なんですよね。。。何とかしてほしいところ。

フットスイッチとなる商品もあった。使い方次第ではめっちゃ便利そう。 これも動作をプログラム可能なのがいいですね。
5ペダルモデルもある。
px.a8.net
まぁちょっと高いけど、ニッチな商品だと思うのでほしい人には刺さりそうですね。
HHKBのセパレートモデルでないかなぁ。
Windows10の設定でCPUのターボブーストを無効化しクロックダウンする
OneMix4のCPUファンがうるさい
OneMix4という小型のPCを使っているが、小型であるため排熱設計が弱い。 すぐにファンは高速回転するため、非常に気がかりである。
OneMix4は低温ならCPUファンは停止する。
どうやらCPUまたはマザーボードのどこかのセンサー温度が60°を超えるとファンが回るらしい。
そこで、CPUの負荷を低下させることで、ファンを回らない運用ができるようにしようと思った。
なお、この機種のCPUファンはWindows側から関与できないタイプなので、BIOSで設定できないと制御しようがないため、ファン停止のアプローチはあきらめる。
Windowsのレジストリからターボブーストを無効化
CPUはi7-1160G7なので、定格CPUは2.11Ghz、ターボブースト時は4.8Ghzまで上昇する。
基本的には高クロック動作はワットパフォーマンスが悪いため、効率的に動作させるために定格クロックで動作させたい。
IntelCPUはBIOSでターボブーストを切ることができるが、設定できない機種も多い。
Windows側からでもターボブーストを無効化することができるのでこちらで設定してみる。
レジストリエディタ(regedit.exe)を起動する- レジストリエディタのアドレスバーに以下を入力
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\be337238-0d82-4146-a960-4f3749d470c7 Attributesを2にする。
レジストリへの設定が完了すると以下のようにプロセッサ パフォーマンスの向上モードが追加される。
バッテリー駆動と電源に接続のところを無効にしよう。

タスクマネージャーで動作クロックを確認すると定格クロックでクロック上昇が止まっていることがわかる。

ThrottleStopで消費電力を見てみても15Wとなっており、設計上のTDPの範囲となった。
さらなるCPUのクロックダウン
ターボブーストの無効化以外にもWindowsからCPUの最大速度を抑制することが可能だ。
発熱を強制的に抑えたかったり、バッテリーの長時間稼働させたいなどの目的があれば、有効な手段だ。
最大スピードを100として、1%単位で性能を抑えることができる。
レジストリエディタ(regedit.exe)を起動する- レジストリエディタのアドレスバーに以下を入力
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\bc5038f7-23e0-4960-96da-33abaf5935ec Attributesを2にする。(Attributesがない場合は右クリックで新規⇒DWORDで作成する)
レジストリへの設定が完了すると電力オプション画面に以下が追加される

バッテリー駆動と電源に接続のところを40%等にしよう。
タスクマネージャーで動作クロックを確認すると0.8Ghzで動作していることがわかる。

この状態でCPU負荷を高めた場合でもCPUのパッケージ消費電力は約7Wであるため、最大消費電力を抑えることができた。
まとめ
- レジストリ設定で電力オプションの追加設定ができる
- ターボブーストを無効化して、ワットパフォーマンスを改善できる。
- 最大のプロセッサの状態からさらに動作速度を抑えることができる。
