nginxのリバースプロキシ設定を共通化する

パスFooでは直にリバプロしたいけど、Barではローカルを見てからリバプロしたいときなどに使える

確認環境

Env Ver
nginx 1.19.8

サンプルコード

location @prox {
    proxy_set_header Authorization "Basic xxxxxxxxxxxxxxxxxxxxx==";
    proxy_pass  https://example.com;
}

# 直遷移させたい
location ^~ /foo {
    try_files /dev/null @prox;
}

# 内部に当ててから遷移したい
location ^~ /bar {
    try_files $uri @prox;
}

nginxでNode.jsインスタンスに対してリバースプロキシする

Proxy headerを設定しないとiOS Safari環境で上手くアクセスできないケースがあるのでやる設定

確認環境

Env Ver
nginx 1.19.8

サンプルコード

httpセクション

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

リバースプロキシ設定

location @prox {
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass  https://example.com;
}

nginxが設定ファイルを読み込んでくれないときの対処

nginxの設定ファイルを更新したのに読み込んでくれないときの対処法

  • 次のようにnginxのリロードや再起動をしても通じないとき
    • nginx -s reload
    • nginx -s stop -> nginx
  • 次のコマンドを流すとプロセスが綺麗に死んでくれて再読込できることがある
    • sudo kill -HUP $(cat /var/run/nginx.pid)

Windows + nginxでPHPを動作させる

確認環境

Env Ver
Windows 10 pro
PHP 8.0.2 NTS Visual C++ 2019 x64
nginx 1.19.8

手順

  1. nginx.confを開き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  C:/nginx/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
    
  2. 設定したフォルダに.phpファイルを配置
  3. nginxを起動
  4. php-cgi.exe -b 127.0.0.1:9000
  5. .phpファイルにアクセス

サービス化する

  • winswを使うとできるらしい