ITエンジニアのコツコツ日記

ITエンジニアの雑記です

多段リバースプロキシにおけるサイト内の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は残りのパーセント%しか見ることができない。

f:id:itkotsukotsu:20220219012706p:plain

今までのWindowsOSでは基本的に残稼働時間が表示されたので、 これは困る。精神衛生上よくない仕様だ。

Windows11 でバッテリー稼働時間を確認する方法

  1. システムを開く(Win + I)
  2. 電源&バッテリー
  3. 推定残り時間を確認

上記の方法で残駆動時間を確認することができる。

しかし毎回こんな面倒なことはやってられない。。。

もっと簡単に確認する方法

BatteryBarアプリケーションのフローティング機能

Windows11からはWindows10まで使えたタスクバーにツールを埋め込む機能が使用できない。 このため、この仕組み以外でモニタリングをする必要がある。

batterybarpro.com

ページ下部にある"Try Basic Version"から無償版がダウンロード可能だ。 f:id:itkotsukotsu:20220219013717p:plain

f:id:itkotsukotsu:20220219013534p:plain

f:id:itkotsukotsu:20220219013554p:plain 忘れずにFloating Toolbarにチェックを入れよう。

インストール後は以下のように表示される。 f:id:itkotsukotsu:20220219014412p:plain

これで常時バッテリー稼働時間を表示することができた。

BatteryBarは以前から愛用しているソフトで、バッテリーの劣化率も確認できる。 Windows11のOSレベルで稼働時間をマウスオーバーで表示できるようになってほしいところだ。

ARM CPU搭載のWindowsノートPC

ARM CPU搭載のWindowsノートPC

最近ARMプロセッサの話題が多い。 特にAppleのM1プロセッサーの話題が多い。

MacBookはARMのM1プロセッサー

M1プロセッサーはワットパフォーマンスが非常に優れており、 高性能、低消費電力、低発熱だ。

f:id:itkotsukotsu:20211215232204p:plain

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

Appleは今までIntel CPUだったけど、ここでARM系プロセッサーに変えている。

アーキテクチャが変わるからそれなりのデメリットがあるはずだけど、それ以上のメリットがあるということだ。

問題としてあがるx86やx64のバイナリが実行できない件についてはRosettaをインストールすることで、動作されることが可能。

エミュレータとして動作するので、動作速度は気になるところだが、意外と早いらしい。

なのでx64が動くとなると特にデメリットもないので、意外とM1プロセッサーが市場に受け入れられたということか。

WindowsもARMで動かしたい。

実はWindows機にもARMプロセッサを搭載したものはある。 Surface Pro X だ。

マイクロソフト Microsoft Surface Pro X【LTE対応 SIMフリー】 [13型 /SSD 256GB /メモリ 8GB /Microsoft SQ1 /ブラック /2020年] MNY-00011 Windowsタブレット(キーボード別売) サーフェスプロX[タブレット 本体 13インチ 新品]【rb_winupg】

価格:164,780円
(2021/12/15 23:32時点)
感想(1件)

このSurface Pro XはCPUとしてMicrosoft SQ2というものが搭載されている。

ベンチマークは passmarkの値を見たところ、しょぼすぎる。 f:id:itkotsukotsu:20211215233516p:plain

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 です。

jp.ext.hp.com

f:id:itkotsukotsu:20211215233834p:plain

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が少ないので、高価な機種しかないが、今後は安くて扱いやすい機種が増えると嬉しい。

ARM CPU搭載のWindowsノートPC

ARM CPU搭載のWindowsノートPC

最近ARMプロセッサの話題が多い。 特にAppleのM1プロセッサーの話題が多い。

MacBookはARMのM1プロセッサー

M1プロセッサーはワットパフォーマンスが非常に優れており、 高性能、低消費電力、低発熱だ。

f:id:itkotsukotsu:20211215232204p:plain

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

Appleは今までIntel CPUだったけど、ここでARM系プロセッサーに変えている。

アーキテクチャが変わるからそれなりのデメリットがあるはずだけど、それ以上のメリットがあるということだ。

問題としてあがるx86やx64のバイナリが実行できない件についてはRosettaをインストールすることで、動作されることが可能。

エミュレータとして動作するので、動作速度は気になるところだが、意外と早いらしい。

なのでx64が動くとなると特にデメリットもないので、意外とM1プロセッサーが市場に受け入れられたということか。

WindowsもARMで動かしたい。

実はWindows機にもARMプロセッサを搭載したものはある。 Surface Pro X だ。

マイクロソフト Microsoft Surface Pro X【LTE対応 SIMフリー】 [13型 /SSD 256GB /メモリ 8GB /Microsoft SQ1 /ブラック /2020年] MNY-00011 Windowsタブレット(キーボード別売) サーフェスプロX[タブレット 本体 13インチ 新品]【rb_winupg】

価格:164,780円
(2021/12/15 23:32時点)
感想(1件)

このSurface Pro XはCPUとしてMicrosoft SQ2というものが搭載されている。

ベンチマークは passmarkの値を見たところ、しょぼすぎる。 f:id:itkotsukotsu:20211215233516p:plain

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 です。

jp.ext.hp.com

f:id:itkotsukotsu:20211215233834p:plain

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配列がなかったりして、購入までには至らなかった。

f:id:itkotsukotsu:20200906234425j:plain:w400

HHKBを複数もっているので、二台使って疑似セパレートキーボードのように使った時期もあるが、場所はとるし、ファンクションキーはキーボードを跨げないのでいまいちだった。

US配列のセパレート対応のエルゴノミクスキーボード

キネシス Freestyle Proキーボード

f:id:itkotsukotsu:20210922104629p:plain:w500 px.a8.net

セパレートキーボードでなんとUS配列。 メカニカルキー採用だし、マクロ対応。

マクロ対応がいいですね。内部メモリに書き込めるようなので、業務で効率化を図りたいときに役立つと思います。

HHKBHybridはマクロ非対応なんですよね。。。何とかしてほしいところ。

f:id:itkotsukotsu:20210922105147p:plain:w400
ふっとスイッチ

フットスイッチとなる商品もあった。使い方次第ではめっちゃ便利そう。 これも動作をプログラム可能なのがいいですね。

5ペダルモデルもある。
f:id:itkotsukotsu:20210922105412p:plain:w400 px.a8.net

まぁちょっと高いけど、ニッチな商品だと思うのでほしい人には刺さりそうですね。

HHKBのセパレートモデルでないかなぁ。