Nginx 不依照我的自訂規則進行路由

Nginx 不依照我的自訂規則進行路由

問題:Nginx 不會根據我在單獨的設定檔中定義的規則來路由流量,而只顯示預設的 404 回應。

情境:我有一個用 Go 編寫的小型中間件應用程序,它提供對 GET 請求的簡單回應。該應用程式部署在連接埠 8080 上:

$ curl localhost:8080
ok

我希望編寫一個 Nginx 配置,允許我從以下位置路由呼叫/api本地主機:8080,這將允許我執行以下操作

$ curl localhost/api
ok

為了實現這一點,我編寫了以下配置:

/etc/nginx/sites-available/custom-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請求

相關內容