雑多なブログ

音楽や語学、プログラム関連の話題について書いています

nginx: レスポンスヘッダから特定のヘッダを消す

nginxのレスポンスヘッダには、サーバー情報が出力されます。
普通にnginxをインストールした場合、バージョン表記については設定で非表示にできるのですが、サーバー名"nginx"という名称を消す事はできません。

ngx_headers_moreモジュールを使えば、ヘッダの書き換えができます。

www.nginx.com

導入方法

ubuntudebian系だと、パッケージ管理のツールでインストールできるようです(ubuntuにて検証)。

apt install libnginx-mod-http-headers-more-filter

ですが、CentOSではyum/dnfではインストールできないようなので、自分でモジュールをコンパイルする必要があります。

CentOSでのインストール方法

1. 各種ソースをダウンロードし解凍します

1-1. Webサーバーにインストールしているものと同じバージョンのnginxのソースをダウンロードします。

nginx.org

1-2. ngx_headers_moreのソースをダウンロードします(下記リンク参照)

github.com

2. モジュールのコンパイル

【/path/to/ngx_headers_more】、【/path/to/nginx_src】の部分には、解凍した各種ソースのパスを指定します。

cd 【/path/to/nginx_src】
./configure --with-compat --add-dynamic-module=【/path/to/ngx_headers_more】 --with-cc-opt=-Wno-error 

そしてビルドします。ここでmakeのターゲットをmodulesに指定すると、モジュールのバイナリーだけ出力してくれるようです。

make modules

ビルドされたバイナリーは、nginxのソース下の下記パスに出力されます。

objs/ngx_http_headers_more_filter_module.so

これを、適切なディレクトリーに移動し、こんな感じでモジュールの読み込みを指定すればモジュールが使用可能となります。

load_module /path/to/ngx_http_headers_more_filter_module.so;

色々な使い道はあるモジュールですが、最初に言及したサーバー情報の削除という点に関しては、下記のディレクティブを設定に追記すればOKです。

more_clear_headers "Server";

3. 注意点

検証できていないのですが、アップデートなどによりバージョンが変わると独自にコンパイルしていたモジュールが動かなくなる、という情報をネットで目にしました。

ということで、独自にビルドしたモジュールを使用している場合、nginxのアップデートの際は、モジュールの動作も含めて検証を行った上で本番環境に適用するのが良さそうです。

CentOS8: dnfのコマンドリスト

dnfはyumに代わる新しいパッケージ管理システムです。
基本的にはyumと同じコマンドで利用できるようになっていました。
とりあえず、基本的なコマンドについてyumコマンドとの対応関係を表にしてみました。
これで、コマンドをど忘れしても大丈夫!

目次

リポジトリの設定

リポジトリの設定はyumと同じくこちらのディレクトリにファイルを作成します。
設定の内容もyumの時と同じです。

/etc/yum.repos.d/*.repo

が、dnfではコマンドで

dnfコマンドのリスト

内容 dnf yum
インストール dnf install PACKAGE_NAME yum install PACKAGE_NAME
再インストール dnf reinstall PACKAGE_NAME yum reinstall PACKAGE_NAME
インストール済パッケージの確認 dnf list installed [PACKAGE_NAME] yum list installed [PACKAGE_NAME]
アップデート dnf update yum update
アップデートの確認 dnf check-update yum check-update
検索 dnf search yum search
リポジトリを指定 dnf --enablerepo=REPOSITORY_NAME yum --enablerepo=REPOSITORY_NAME
パッケージのアンインストール dnf remove PACKAGE_NAME yum remove PACKAGE_NAME
リポジトリの有効化 dnf config-manager --set-enabled REPOSITORY_NAME yum-config-manager --enable REPOSITORY_NAME
リポジトリの無効化 dnf config-manager --set-disabled REPOSITORY_NAME yum-config-manager --disable REPOSITORY_NAME
リポジトリ追加 dnf config-manager --add-repo REPOSITORY_URL yum-config-manager --add-repo REPOSITORY_URL

おわりに

yum、dnfには色々なコマンドがありますが、個人的に使用しているのは install/remove/list installed/searchくらいですね・・・ 普段利用しないコマンドでも便利なコマンドがありそうなので、もう少し継続して調べてみたいところです。

【悲報】もう、instagramではoauthログインはできない。

残念なことに、今年廃止になったようです。
ということで、instagramでoauthをつかったログインはできません!!

以下公式のドキュメントの引用です。

認証 — Instagram基本表示は認証ソリューションではありません。APIが返すデータを使用して、アプリユーザーを認証したり、アプリユーザーをアプリにログインさせることはできません。認証ソリューションが必要な場合は、代わりにFacebookログインを使用するようおすすめします。

引用元リンク: developers.facebook.com

でも、なぜかこちらのドキュメントページではoauthで認証ができるかのような 説明が記載されています。

developers.facebook.com

なんなんでしょう。 ドキュメントが整理できていないのでしょうか。

ちなみに、今oauthを試してみたところ、instagramのログイン画面までは表示されます。

f:id:uc_ebuc:20200926004553p:plain

が、しかしログイン後に意味不明なエラーが表示されて終了します。

Oops, an error occurred.

HTTPステータスコードは500

設定不備などであれば、そういったメッセージが表示されると思いますので、 もはやサポートしてないから放置していると言う状態なのでしょうか。
使えないのならはっきりドキュメントにも書いて欲しいですね。

CentOS8: ファイルシステム

CentOS8では、ext3ext4、XFSがサポートされています ストレージごとの最大ファイルサイズは下記の通りです。

アーキテクチャ 種類 ファイルサイズ
ext4 ファイル 16TB
ext4 ファイルシステム 50TB
XFS ファイル 8EB
XFS ファイルシステム 1PB

※1TB = 1000GB
※1PB = 1000TB
※1EB = 1000PB

個人的な疑問として、XSFはなぜファイルシステムよりも、ファイルサイズの方が最大値が大きいのか。参考にしているCentOS8の本が間違っているのか、あるいは、そういうものなのか。ちょっと気になるところです。

100均で購入した意外なものを、テナーサックス用のリードケースとして使ってみる。

リードケースってまともに購入すると高いので、 100均で代用品を探してみたら丁度良いものを見つけた。

普通の人なら、サイズの合うタッパーを探すところかと思いますが、 今回私が目をつけたの、それは・・・・・・

しょうゆさし。

は?何を言っているんだコイツは、馬鹿か? と、思いましたか?

大マジです。

まぁ、実際にリードを入れてみたところを写真に撮ってみたので見てください。

f:id:uc_ebuc:20200920184928j:plain

想像以上にサイズ感ぴったりです。

タッパーの場合、長さと幅は丁度良くても、深さが余分で、例えば数枚程度のリードだとスカスカになってしまうので、スポンジなどをつめて隙間を埋める必要があります。ですが、このしょうゆさしの場合はちょうど良い感じです。

リード購入時に付属していたリードケース(リード2枚が互い違いに刺さる形)を一緒に入れてみると、とりあえずリード6枚は収納できました。ま、付属のリードケースはもっとペラペラなのが普通な気もするので、実際にはもう少し沢山はいるような気はします。

f:id:uc_ebuc:20200920190021j:plain

リードを固定できないので、裸のまましまうのはちょっと辛いとは思います。あるいは、メラミンスポンジなどをつめて隙間を埋めれば良いかもしれませんね。

Fix problem: Locale: Cannot Set LC_ALL to default locale: No such file or directory

When I had installed centos 8, Due to lack of locale data, this error has occurred

Error

Cannot Set LC_ALL to default locale: No such file or directory

I installed this package.

sudo dnf install glibc-langpack-ja