2023.12.08  

【Nginx】プロキシ設定時の301エラー

Nginx    

Nginxでhttp://www.example.com/some/pathでリクエストが来たら、http://www.example2.com/some/pathに転送するような設定をおこなったが、301`エラーが出てしまいうまくいかなかったのでメモ書きです。

# default.conf(修正前)
server {
    listen       8080;
    listen       443 ssl http2;
    server_name  localhost;
    client_max_body_size 10M;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    ssl_protocols TLSv1.3;
    ssl_certificate /etc/ssl/certs/cert.pem;
    ssl_certificate_key /etc/ssl/certs/key.pem;

   # ここで/some/pathのついたURLをhttp://www.example2.com/some/pathに転送する設定をしている
    location /some/path/ {
        proxy_pass http://www.example2.com/some/path;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

解決方法

locationに設定したパスの末尾に/がついていたのがいけなかったようです。
location/some/path/を/some/pathに修正したところ200レスポンスが返ってくるようになりました。
下記はマニュアルの引用です。

    If a location is defined by a prefix string that ends with the slash character, and requests are processed by one of proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass, or grpc_pass, then the special processing is performed. In response to a request with URI equal to this string, but without the trailing slash, a permanent redirect with the code 301 will be returned to the requested URI with the slash appended. If this is not desired, an exact match of the URI and location could be defined like this

    場所がスラッシュ文字で終わるプレフィックス文字列によって定義されており、リクエストが proxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass、memcached_pass、または grpc_pass のいずれかによって処理される場合、特別な処理が実行されます。 URI がこの文字列と等しく、末尾のスラッシュがないリクエストに応答すると、コード 301 を持つ永続的なリダイレクトが、スラッシュが追加されたリクエストされた URI に返されます。 これが望ましくない場合は、URI と場所の完全一致を次のように定義できます。

参考:https://nginx.org/en/docs/http/ngx_http_core_module.html#location

設定ファイル修正

# default.conf(修正後)
# (中略)

   # ここで/some/path/を/some/pathに修正
    location /some/path {
        proxy_pass http://www.example2.com/some/path;
    }

参考にさせて頂いたサイト

https://zenn.dev/paiza/articles/f482ab577782c5

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信