Nginx 不按照我的自定义规则进行路由

Nginx 不按照我的自定义规则进行路由

问题:Nginx 不会根据我在单独的配置文件中定义的规则路由流量,而只是显示默认的 404 响应。

语境:我有一个用 Go 编写的小型中间件应用程序,它为 GET 请求提供简单的响应。该应用程序部署在端口 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

相关内容