Проблема: Nginx не направляет трафик на основе правила, которое я определил в отдельном файле конфигурации, а просто отображает ответ 404 по умолчанию.
Контекст: у меня есть небольшое промежуточное ПО, написанное на Go, которое обеспечивает простой ответ на запросы GET. Приложение развернуто на порту 8080:
$ curl localhost:8080
ok
Я хочу написать конфигурацию Nginx, которая позволит мне направлять вызовы с /api на localhost: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 (работающие на raspberry pi)
$ 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
и посмотреть, действительно ли загружается ваша конфигурация. Также проверьте журнал ошибок nginx, который может помочь вам узнать, является ли источником или самим nginx возврат 404. - person Joshua DeWald   schedule 20.02.2018nginx -T
подтверждает, что мои пользовательские правила загружаются, а журнал ошибок пуст - person Gabriel Ruiu   schedule 21.02.2018