private IPしか持たないEC2インスタンスに対して,reverse proxyでつなぐことができるのかを簡単にためしたら,確かにできた。
こんな構成のVPCを作る。
public-subnetにreverse proxy用のEC2を立てる。このinstanceにはpublic IPを設定する。
private-subnetにredirect先のserver EC2を立てる。このinstanceはpublic IPを設定しない。
両者にNginxをインストールする。
sudo yum install nginx
reverse proxy側のEC2にて,
/etc/nginx/nginx.conf
に,以下を追記する。
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location /private/ { proxy_pass http://xxx.xxx.xxx.xxx:80/; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
/private/は好きにパスを設定してよい。xxx.xxx.xxx.xxxはprivate IP。
あとは,忘れずにNginxを起動しておく。
sudo systemctl restart nginx sudo systemctl status nginx sudo systemctl enable nginx
リダイレクト先の応答がかえって来ないので悩んでいたら,単にNginxが起動していないだけだった。