【备忘录】在Kali Linux上使用nginx构建Web服务器

你好,我是夏季。
这次我尝试构建了一个用于学习Web应用程序漏洞检测的Web服务器。

顺便提一下,nginx的发音是“えんじんえっくす”。
不知道怎么读的时候我一直发音成“んぎっくす”(*_*)

我打算只进行必要的最低设置,如果需要新的设置,我会逐步添加。

目录

1. 首先
2. 执行内容
3. 前提条件
4. nginx 是什么
5. 安装
6. 启动和关闭
7. 基本设置
8. 公开静态内容
9. 最后
10. 参考资料

首先

由于有一些已经提供的被攻击的网站,所以没有必要自己制作,但在今后学习Web应用程序漏洞方面还是有必要了解Web服务器配置知识,我计划使用nginx来进行搭建。

2. 实施的内容

安装nginx,并显示索引页面。

3. 前提条件

Explanation: This phrase is already in Chinese and does not require paraphrasing. It means “preconditions” or “premises”.

    OS KaliLinux

4. nginx是什么?

概要
以下の記事を参考にします
NGINXとは? NGINXとNGINX Plusを徹底解説

C10k問題(クライアント1万台問題)を解決することを念頭に開発され、優れたスケーラビリティを誇る

C10K問題:1台のサーバが1万のクライアントから同時接続された場合、サーバの処理が追い付かなくなるスケーラビリティ面での問題

HTTPサーバとしての機能に加え、以下の機能も持っている

ロードバランサ
リバースプロキシ
コンテンツキャッシュ
APIゲートウェイ
Web Application Firewall

Webサーバ利用シェア率
2021年5月のWebサーバ利用シェア、「Nginx」が「Apache」を初めて上回る

Q-Successは2021年5月4日(米国時間)、Webサーバ技術の使用サイト数に基づく市場シェア調査結果を発表した。「Nginx」と「Apache」がともに33.8%を占め、わずかな差でNginxが首位、Apacheが2位となった。

5. 安装

有两种安装方法,一种是从源代码安装,另一种是从已编译的软件包安装。这次将从已编译的软件包中进行安装。
【参考】nginx: Linux packages #Debian

    • ※それぞれのインストール方法のメリデメについては以下を参照

 

    Nginxのインストールと基本設定

安装前提条件。

sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

5-2. 导入nginx签名密钥的公式

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

请确保下载的文件中包含适当的密钥。

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

为了为稳定的nginx软件包设置apt源,您需要执行下面的命令。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

通过设置存储库的固定版本,优先选择由软件包分发提供的内容。

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

要安装nginx,请执行以下命令。

sudo apt update
sudo apt install nginx

6. 开始和结束 hé

执行文件命令

起動時のオプション

オプション
説明

-t
設定ファイルの構文チェック

-c nginx.conf
設定ファイルを指定する

-g settings
設定ファイルに記載されていない設定を指定する

終了時のオプション

オプション
説明

stop
リクエストの処理を待たずに終了

quit
現在のリクエスト処理が完了してから終了する

reload
nginxを終了せず、設定ファイルの再読み込みを行う

reopen
ログファイルを再度開く

启动Nginx

sudo nginx
or
systemctl start nginx

6-2. 检查启动

起動確認
systemctl status nginx

プロセス確認
# ps aux | grep nginx
root 94175 0.0 0.0 10204 992 ? Ss 19:49 0:00 nginx: master process nginx
root 94190 0.0 0.1 6096 1964 pts/0 S+ 19:51 0:00 grep –color=auto nginx

nginxのプロセスにはマスタプロセスとワーカプロセスなどがある

ポート確認
# lsof -i:80 | grep root
nginx 94175 root 5u IPv4 300655 0t0 TCP *:http (LISTEN)
nginx 94175 root 6u IPv6 300656 0t0 TCP *:http (LISTEN)

6-3. 关闭nginx

sudo nginx -s stop
systemctl stop nginx

7. 基本设定 –

在编辑时设置配置文件“/etc/nginx/nginx.conf”。
配置文件可以在构建时指定,也可以在启动时用选项参数指定。

    • 参考

 

    【Nginx】設定ファイルとは(nginx.conf、conf.d、sites-available、uwsgi_paramsなど)

7-1. 变量

ディレクティブのパラメータには変数を使用することが出来る
nginxでは頭に$をつけて表現する
リクエストを処理するときなど、値が評価されるときに値が展開される

変数例

変数名
説明

$connection
コネクションのシリアル番号

$host
マッチしたサーバ名もしくはHostヘッダの値、なければリクエスト内のホスト

$hostname
ホスト名

$nginx_version
nginxのバージョン

リクエストに応じて定義される変数

変数名
説明

$arg_属性名
クエリストリングに含まれる値
$arg_page

$cookie_属性名
Cookieに含まれる値
$cookie_PHPSESSID

$http_フィールド名
リクエストヘッダの値
$http_user_agent

$sent_http_フィールド名
送信したレスポンスヘッダの値
$sent_http_chahe_control

7-2. 包含設定的引入

使用include指令,可以加载和使用分割成多个文件的内容
可以用相对路径或绝对路径来指定。

include mime.types;
include /etc/nginx/mime.types;

使用文件掩码可以使用通配符指定。

include sites-enabled/*.conf

7-3. 关于HTTP服务器的设置。

要描述关于HTTP服务器的设置,需要使用http指令来定义http上下文。

7-3-1. 虚拟服务器的定义

可以运行具有不同设置的多个HTTP服务器(也称为虚拟服务器)。
虚拟服务器表现得像是不同的HTTP服务器,并具有独立的设置。
这些设置可以通过服务器指令进行定义。

http{
    server{
        ~
    }

    server{
        ~
    }
}

7-3-2. 设置指令

ディレクティブ名説明設定例listenバーチャルサーバが使用するアドレス、ポートを指定listen *:8080;
listen 127.0.0.1:8080;server_nameホスト名(正規表現しよう可能)server_name example.com *.example.com;root公開するディレクトリを設定
ここで指定したディレクトリのパスがURIのルートにマッピングされるroot /var/www/html;types参照されたファイルの拡張子と、Content-Typeとして使用するMIMEタイプのマッピングをtypesディレクティブによって定義するtext/html html;
image/gif gif;
image/jpeg jpg;locationマッチするURIごとに設定を指定する
indexディレクトリにアクセスされた場合に表示するページ(インデックスページ)を指定index ファイル名;autoindexインデックスページの自動生成の有効/無効を設定autoindex onerror_pageエラー時に表示するページを指error_page 404 /404.html

7-4. Nginx主体的配置。

ディレクティブ名説明設定例error_logエラーログの出力パスを指定
第2パラメータには出力レベルを指定できる
バーチャルサーバごとの設定が可能 error_log /var/log/nginx/error.log;log_not_foundファイルが存在しない場合のエラー出力を有効/無効にするlog_not_found onpidPIDファイルの出力先を指定する。PIDファイルにはマスタプロセスのPIDが出力される。pid PIDファイルパス;

7-5. 关于表演的设置

ディレクティブ名説明設定例keepalive_timeoutnginxに常時接続しているクライアントに対するタイムアウト時間を第1パラメータに設定するkeepalive_timeout 60s

7-6. 关于访问限制的设置

目前我太忙了,无法参加明天的聚会。

8. 发布静态内容

image.png

9. 最后

暫時用http連接可以確認到首頁的顯示。接下來希望創建並放置所謂的「被攻擊網站」Web系統。

10. 参考资料

    • 参考書

nginx実践入門

广告
将在 10 秒后关闭
bannerAds