アイデアは、着信リクエストをhttp://abc.example.com/...
に取り、http://example.com/abc/...
に書き換えることです。
これは、301/302リダイレクトを行うのに十分簡単です。
# rewrite via 301 Moved Permanently
server {
listen 80;
server_name abc.example.com;
rewrite ^ $scheme://example.com/abc$request_uri permanent;
}
トリックは、abc.example.com
とexample.com
が同じNginxインスタンスを指している場合に、このURLの変更透過的にをクライアントに行うことです。
別の言い方をすれば、example.com/abc/...
がリクエストされ、別のクライアントラウンドトリップなしの場合、Nginxはabc.example.com/...
からコンテンツを提供できますか?
開始ポイント構成
301でタスクを実行するNginx構成:
# abc.example.com
server {
listen 80;
server_name abc.example.com;
rewrite ^ $scheme://example.com/abc$request_uri permanent;
}
# example.com
server {
listen 80;
server_name example.com;
location / {
# ...
}
}
# abc.example.com
server {
listen 80;
server_name abc.example.com;
location / {
proxy_pass http://127.0.0.1/abc$request_uri;
proxy_set_header Host example.com;
}
}