問題: 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
。