Nginxの基本から高度な設定まで

リバースプロキシ、ロードバランシング、動的・静的リクエストの分離

プロキシ

  • フォワードプロキシ クライアントがインターネット上のリソースにアクセスする際、プロキシサーバーを通じてアクセスします。これはフォワードプロキシと呼ばれます。 例:VPNを使用して海外のウェブサイトにアクセスする場合。

  • リバースプロキシ プロキシサーバーは、クライアントからのリクエストに基づいて、バックエンドのサーバー(Webサーバーなど)からリソースを取得し、それをクライアントに返します。クライアントはプロキシサーバーのIPアドレスしか知らず、プロキシサーバーの背後のサーバークラスターの存在は知りません。

インストール

公式ウェブサイト:

Windows

nginx.exeをダブルクリックして実行し、ブラウザでlocalhostにアクセスします。

Linux

  1. Nginx yumリポジトリの設定 /etc/yum.repos.d/nginx.repoファイルを作成します。
sudo vim /etc/yum.repos.d/nginx.repo

以下の内容を追加します。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
  1. Nginxのインストール 以下のコマンドを実行してNginxをインストールします。
sudo yum install nginx
  1. Nginxの起動 以下のコマンドを実行してNginxを起動します。
sudo systemctl start nginx

Nginxの状態を確認するには以下のコマンドを実行します。

sudo systemctl status nginx

起動時に自動的にNginxを起動するには以下のコマンドを実行します。

sudo systemctl enable nginx
  1. Nginxサービスのデフォルトページへのアクセス Welcome to nginx!ページにアクセスできれば、Nginxが正常に動作していることを確認できます。

Docker

イメージを取得します。

docker pull nginx

Nginxを起動します。

docker run -d --name=nginx -p 80:80 -v nginx_conf:/etc/nginx -v nginx_html:/usr/share/nginx/html -v nginx_logs:/var/log/nginx nginx

設定

  1. 設定ファイル関連
  • /etc/nginx/: 主要なNginx設定ファイルのディレクトリ。
  • /etc/nginx/nginx.conf: Nginxの主設定ファイル、グローバル設定情報が含まれています。
  • /etc/nginx/conf.d/: 追加の設定ファイルが通常ここに配置され、主設定ファイル/etc/nginx/nginx.confがこれらのファイルを読み込みます。
  1. ログ関連
  • /var/log/nginx/: Nginxのログファイルディレクトリ、アクセスログとエラーログが含まれます。
  • /var/log/nginx/access.log: アクセスログ、すべてのリクエストが記録されます。
  • /var/log/nginx/error.log: エラーログ、サーバー処理中のエラー情報が記録されます。

主設定ファイル

# グローバル設定
user  nginx;    # ユーザーとグループの設定
worker_processes  auto;  # プロセス数
error_log  /var/log/nginx/error.log notice;  # ログ保存先
pid        /var/run/nginx.pid;  # プロセスID

# イベント設定
events {
    worker_connections  1024;
}

# HTTPサーバー設定
http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf
}

server部分

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://serverlist;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

リバースプロキシ

server {
    listen       9090;
    server_name  あなたのIP;

    location / {
        proxy_pass https://www.example.com/;
    }
}

ロードバランシング

デフォルトではラウンドロビン方式です。

worker_processes  1;

events {
    worker_connections  1024;
}

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

    sendfile        on;
    keepalive_timeout  65;

    upstream my_servers {
       server localhost:8080;
       server localhost:8081;
    }

    server {
        listen       80;
        server_name  localhost;

        location /list {
            proxy_pass  http://my_servers;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
weight

weightは重みを表し、デフォルト値は1です。重みが高いほど多くのクライアントが割り当てられます。

upstream server_list {
    server localhost:8080 weight=5;
    server localhost:9999 weight=1;
}
ip_hash

最初のリクエスト時にクライアントのIPアドレスからハッシュ値を計算し、特定のサーバーにリクエストを割り当てます。これにより、セッションの継続性が保たれます。

upstream backserver { 
    ip_hash; 
    server 127.0.0.1:8080; 
    server 127.0.0.1:9090; 
}
最小接続数

接続数が最少のサーバーにリクエストを割り当てます。

upstream backserver { 
    least_conn;
    server 127.0.0.1:8080; 
    server 127.0.0.1:9090; 
}

タグ: nginx 反向代理 负载均衡 动静分离 linux

6月15日 20:49 投稿