nginx

BASIC認証設定

  • 簡単に設定できる。

  • htpasswdをインストール。

$ sudo apt install apache2-utils # Debian系
$ sudo yum install httpd-tools # RedHat系
  • username/passwordを作成

sudo htpasswd -c -b /etc/nginx/.htpasswd {username} {password}
  • nginx設定ファイルの編集

location / {
    auth_basic "Restricted";                   # 認証時に表示されるメッセージ
    auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
}
  • 参考

    • https://qiita.com/kotarella1110/items/be76b17cdbe61ff7b5ca

    • https://qiita.com/You_name_is_YU/items/e8db11eaa10067556e52

自己証明書の設定

  • 証明書の作成(作成は別のマシンでもかまわない)

openssl req -new -x509 -sha256 -newkey rsa:2048 -days 365 -nodes -out nginx.pem -keyout nginx.key
  • 適当な場所に複製

mkdir -p /etc/nginx/ssl/
cp nginx.key /etc/nginx/ssl/nginx.key
cp nginx.pem /etc/nginx/ssl/nginx.pem
  • confのどこかに以下のように記述

server {
    listen 80;
    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl;
    server_name _;

    ssl_certificate /etc/nginx/ssl/nginx.pem;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
}
  • 参考

    • https://qiita.com/inakadegaebal/items/29d21d1f5a904a6ba92d

nginxルーティング例

  • パスでルーティングする場合はこのようにする。

    • localhost以外に転送することも可能。

    • 下記は別コンテナのmlflowに転送する例。

    • コンテナの場合、コンテナ内のポート番号にすること。

server {
    listen 80;
    server_name localhost;

    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }

    location /mlflow {
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host http://mlflow:5000/;
        proxy_pass http://mlflow:5000/;
        proxy_redirect off;
    }
}
  • ポートでルーティングする

    • クライアントからsshでポートフォワーディングする場合は、パスルーティングできない。

    • そういう場合は、別のポートで待ち受け、それを別のサービスにすべて転送すればよい。

server {
    listen 5000;
    server_name localhost;

    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    location / {
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host http://mlflow:5000/;
        proxy_pass http://mlflow:5000/;
        proxy_redirect off;
    }
}

Last updated