WebサーバーにNginxを使っていて、セキュリティ上、Nginxを使っていることが、ユーザーに分からないようにしたい場合、ngx_http_header_filter_module.c 内のServer名を変更する。
1. rpmビルドに必要なパッケージのインストール
1 2 3 |
# yum -y install rpmdevtools redhat-lsb-core zlib-devel pcre-devel gcc |
2. rpmビルド用ユーザーの作成
1 2 3 |
# useradd rpmbuilder |
3. ユーザーを作成したら、そのユーザーに切り替えて「rpmdev-setuptree」コマンドを実行し、ディレクトリ作成など、ビルドを実行するための初期設定を行います。
1 2 3 4 |
# su - rpmbuilder $ rpmdev-setuptree |
4. ソースをダウンロード。
2019/8/1時点で最もベターなバージョン(nginx-1.15.12)をダウンロードする。
nginxのビルドにはOpenSSLのソースコードが必要なので、2019/8/1時点で最もベターなバージョン(openssl-1.1.1c)をダウンロードする。
Nginx
1 2 3 4 |
$ curl -L -O https://nginx.org/packages/mainline/centos/7/SRPMS/nginx-1.15.12-1.el7.ngx.src.rpm $ rpm -ivh nginx-1.15.12-1.el7.ngx.src.rpm |
OpenSSL
1 2 3 4 |
$ curl -L -O https://www.openssl.org/source/openssl-1.1.1c.tar.gz $ tar xvfz openssl-1.1.1c.tar.gz |
5. ソースコード修正。
5-1. ソースコードを解凍。
1 2 3 4 |
$ cd /home/rpmbuilder/rpmbuild/SOURCES/ $ tar -zxvf nginx-1.15.12.tar.gz |
5-2. 修正。
1 2 3 |
$ vi nginx-1.15.12/src/http/ngx_http_header_filter_module.c |
修正前
1 2 3 4 5 |
static u_char ngx_http_server_string[] = "Server: nginx" CRLF; static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; |
修正後
1 2 3 4 5 |
static u_char ngx_http_server_string[] = "Server: w" CRLF; static u_char ngx_http_server_full_string[] = "Server: w" CRLF; static u_char ngx_http_server_build_string[] = "Server: w" CRLF; |
5-3. 修正したソースを圧縮し直す。
1 2 3 4 |
$ rm nginx-1.15.12.tar.gz $ tar -zcvf nginx-1.15.12.tar.gz nginx-1.15.12 |
5-4. 不要なworkディレクトリを削除。
1 2 3 |
$ rm -R nginx-1.15.12 |
6. specファイルの修正
1 2 3 |
$ vi /home/rpmbuilder/rpmbuild/SPECS/nginx.spec |
6-1. 修正箇所1
1 2 3 4 5 6 7 8 9 10 11 |
%if 0%{?rhel} == 7 %define _group System Environment/Daemons %define epoch 1 Epoch: %{epoch} Requires(pre): shadow-utils #Requires: openssl >= 1.0.2 <-コメントアウト #BuildRequires: openssl-devel >= 1.0.2 <-コメントアウト %define dist .el7 %endif |
6-2. 修正箇所2
修正前
1 2 3 |
%define BASE_CONFIGURE_ARGS ・・・・ --with-stream_ssl_preread_module") |
修正後
1 2 3 |
%define BASE_CONFIGURE_ARGS ・・・・ --with-stream_ssl_preread_module --with-openssl=/home/rpmbuilder/openssl-1.1.1c") |
7. rpmパッケージをビルド。 ※5分くらいかかる。
1 2 3 |
$ rpmbuild -bb /home/rpmbuilder/rpmbuild/SPECS/nginx.spec |
生成されたrpmパッケージ -> /home/rpmbuilder/rpmbuild/RPMS/x86_64/nginx-1.15.12-1.el7.ngx.x86_64.rpm
8. ビルドしたrpmパッケージをインストール
1 2 3 4 |
$ su - # yum install /home/rpmbuilder/rpmbuild/RPMS/x86_64/nginx-1.15.12-1.el7.ngx.x86_64.rpm |
9. 組み込みモジュールの確認
1 2 3 |
# nginx -V |
10. 起動設定
Nginx のインストールが完了したら、コンピュータ起動時に自動的に Nginx が起動するように設定。
1 2 3 |
# systemctl enable nginx |
11. 起動
1 2 3 |
# systemctl start nginx |
12 サービスの状態確認
1 2 3 4 |
# sudo systemctl status nginx # sudo systemctl is-enabled nginx |
13. 内部接続確認
1 2 3 |
# curl http://localhost |
14. ブラウザから外部接続確認
http://192.168.11.31/
コメント