nginx リバースプロキシ

自宅に複数サーバがあってドメインでサーバを分けたいと思った

自宅は1つのグローバルIPしかないけどサーバが二つあって ドメインを振ろうにもどうやるんだ?って迷ってたらnginxでなんかできたなと思い出した

もう一つのサーバで動いてるのは何かというとファイルサーバ ファイルサーバにはメインサーバのCNAMEでドメインを振る

イメージ図

一応メイン?のサーバはないよりはマシなベーシック認証とfail2banで設定している ローカルからのアクセスにはベーシック認証をかけていない

[code lang=text] satisfy any; allow 192.168.0.0/24; deny all;

auth_basic "Please enter your username and password.";
auth_basic_user_file "/etc/nginx/conf.d/.htpasswd";

[/code]

あんまりconfファイル増やしたくないし

[code lang=text] location ^~ /server2/ { satisfy any; allow all; proxy_pass http://192.168.0.47; } [/code]

みたいな感じでいけねーかなと思っていろいろ試したけどダメだったので新しいconfにすることにした (そもそも別のサーバに飛ばすんだから別のconfに書いた方がわかりやすいことを後で気づく

[code lang=text] [root@n54l conf.d]# cat test.conf server { listen 80; server_name test.astail.net; root /var/www/html; index index.php index.html; client_max_body_size 2G; charset UTF-8; fastcgi_buffers 64 4K; fastcgi_read_timeout 3600s;

error_page   404              /404.html;
error_page   500 502 503 504  /50x.html;

proxy_set_header Host $http_host;
location / {
    proxy_pass http://192.168.0.47;
}

} [/code]

ファイルサーバ側のnginxは特に何も弄ってないが気をつける点が一点 リバースプロキシ側のnginxの設定でも client_max_body_size 2G; fastcgi_read_timeout 3600s; とかを書いてあげないとファイルサーバまで行く途中で引っかかる場合があるので注意