Skip to content
subaru edited this page Mar 14, 2024 · 16 revisions

公式ドキュメント

Install方法

環境:M1mac

brew経由でnginxのinstall
brew install nginx

Nginxの使い方

brew経由

起動
brew services start nginx

停止
brew services stop nginx

直接起動
sudo <nginxのpath>

直接停止
sudo <nginxのpath> -s stop

使用中のconfigのパスを表示
nginx -t

アクセス方法

curl http://localhost:80

Config

nginx.conf


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    include servers/*;
}

参考サイト

Nginx公式のconfig設定
How nginx processes a request
Server names
格ディレクティブの説明(context含む)
→ nginxのconfigのパース方法#19

webサーバーのアーキテクチャ
2015年Webサーバアーキテクチャ序論

非同期I/Oの良さを「マルチスレッド」「マルチプロセス」と比較し解説している。
Webサーバーアーキテクチャ進化論2023



[Config] Directivesの設定と値の組合せ

serverコンテキストのみで使用可能

server_name: string ホスト名 | ドメイン名 | NULL (これらの組合せ可能)

listenディレクティブにIPアドレスとポート番号を設定する事でサーバー名を省略できる。
未定義のサーバー名がリクエストされた場合、ステータスコード[444]を返す。
正規表現とワイルドカードを使用できる。
サーバー名のサンプルコードや詳細 → https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page
サーバ名のマッチングに関しての説明 → issue#19

listen: int
ポート番号 | IPアドレス (オプションで default_server string型 を追加可能)

複数のサーバーブロックが同じポートでリッスンしている場合、デフォルトサーバーが明示的に指定されていないと、最初のサーバーブロックがデフォルトサーバーとして扱われる。

locationコンテキストのみで使用可能

allow_method: string | vector<string>
許可されるHTTPメソッド(GET, POST, DELETE

特定のルートで許可されるHTTPメソッドを定義する。
この指定により、特定のルートに対するリクエストメソッドを制限することができる。

cgi_path: string
CGIスクリプトのファイルパス

CGIスクリプトを実行するためのファイルパスを指定する。
CGIスクリプトはサーバー側で動的なコンテンツを生成するために使用される。

upload_path: string
アップロードされたファイルの保存先パス

ファイルアップロードを受け入れるルートで、アップロードされたファイルが保存される場所を指定する。
アップロードされたファイルを適切なディレクトリに保存するために使用する。

両方のコンテキストで使用可能

location: string
リクエストURIに対する設定を定義

リクエストURIのマッチングに関しての説明 → issue#19

root: string
ドキュメントのルートディレクトリのパス

error_page: int + string
HTTPエラーコード + カスタムエラーページのパス

特定のHTTPエラーコードが発生した際に表示するカスタムエラーページを指定する。
複数のエラーコードに対して同じエラーページを設定することが可能。

client_max_body_size: size_t
リクエストボディの最大サイズ(バイト単位)

クライアントからのリクエストボディのサイズがこの値を超える場合、サーバーはエラーを返す。
特に大きなファイルを扱う場合には、この値を適切に設定する必要がある。

index: string
ディレクトリリクエスト時のデフォルトファイル名

ディレクトリがリクエストされた際に返すデフォルトのファイルを指定する。
nginxのindexに関しての説明 → 公式Document

autoindex: bool
ディレクトリの内容をブラウザ上で表示するか(on | off

onに設定すると、指定したディレクトリの内容を一覧表示する。
ディレクトリ内のファイル一覧をユーザーに提示したい場合に有効。 https://nginx.org/en/docs/http/ngx_http_autoindex_module.html