Nginx がカスタムルールに従ってルーティングしない

Nginx がカスタムルールに従ってルーティングしない

問題: Nginx は、別の設定ファイルで定義したルールに基づいてトラフィックをルーティングせず、デフォルトの 404 応答を表示するだけです。

コンテクスト: GET リクエストに対してシンプルな応答を提供する Go で書かれた小さなミドルウェア アプリケーションがあります。アプリケーションはポート 8080 にデプロイされています。

$ curl localhost:8080
ok

私はNginxの設定を書き、次の場所からの通話をルーティングできるようにしたい。/apiローカルホスト:8080これにより、次のことが可能になります

$ curl localhost/api
ok

これを実現するために、次の構成を作成しました。

/etc/nginx/sites-available/カスタム-nginx-rules

server {
    listen 80;

    location /api {
        proxy_pass http://localhost:8080;
    }
}

私はソフトリンクも作成しました/etc/nginx/sites-enabled/上記のファイル

$ ls -l /etc/nginx/sites-enabled
total 0
lrwxrwxrwx 1 root root 34 Jan 19 16:42 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 32 Feb 20 14:56 custom-nginx-rules -> /etc/nginx/sites-available/custom-nginx-rules

残りの設定はバニラ Nginx で、何も変更されていません。このシンプルな設定にもかかわらず、次の呼び出しを行うと 404 が返されます。

$ curl localhost/api
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.10.3</center>
</body>
</html>

他の情報: 以下は私のシステムにインストールされている nginx パッケージです (ラズベリーパイで実行)

$ dpkg -l | grep nginx

ii  libnginx-mod-http-auth-pam      1.10.3-1+deb9u1              armhf        PAM authentication module for Nginx
ii  libnginx-mod-http-dav-ext       1.10.3-1+deb9u1              armhf        WebDAV missing commands support for Nginx
ii  libnginx-mod-http-echo          1.10.3-1+deb9u1              armhf        Bring echo and more shell style goodies to Nginx 
ii  libnginx-mod-http-geoip         1.10.3-1+deb9u1              armhf        GeoIP HTTP module for Nginx
ii  libnginx-mod-http-image-filter  1.10.3-1+deb9u1              armhf        HTTP image filter module for Nginx
ii  libnginx-mod-http-subs-filter   1.10.3-1+deb9u1              armhf        Substitution filter module for Nginx
ii  libnginx-mod-http-upstream-fair 1.10.3-1+deb9u1              armhf        Nginx Upstream Fair Proxy Load Balancer
ii  libnginx-mod-http-xslt-filter   1.10.3-1+deb9u1              armhf        XSLT Transformation module for Nginx
ii  libnginx-mod-mail               1.10.3-1+deb9u1              armhf        Mail module for Nginx
ii  libnginx-mod-stream             1.10.3-1+deb9u1              armhf        Stream module for Nginx
ii  nginx                           1.10.3-1+deb9u1              all          small, powerful, scalable web/proxy server
ii  nginx-common                    1.10.3-1+deb9u1              all          small, powerful, scalable web/proxy server - common files
ii  nginx-full                      1.10.3-1+deb9u1              armhf        nginx web/proxy server (standard version)

また、この設定はホスト名やサーバー名に依存しないことも必要です。ホストに関係なくルーティングを行う必要があります。

コマンドを実行するとnginx -T、ファイルがロードされていることが確認されます。エラー ログも空です。

答え1

シンボリックリンクdefaultを削除して/etc/nginx/sites-enabled、nginx を再起動します。

それ以外の場合は、このdefault設定はリクエストを処理するために使用されますcustom-nginx-rules

関連情報