Nginx가 내 맞춤 규칙에 따라 라우팅하지 않습니다.

Nginx가 내 맞춤 규칙에 따라 라우팅하지 않습니다.

문제: Nginx는 별도의 구성 파일에 정의한 규칙에 따라 트래픽을 라우팅하지 않고 기본 404 응답만 표시합니다.

문맥: GET 요청에 대한 간단한 응답을 제공하는 Go로 작성된 작은 미들웨어 애플리케이션이 있습니다. 애플리케이션은 포트 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

defaultnginx 에서 심볼릭 링크를 제거 /etc/nginx/sites-enabled하고 다시 시작하십시오.

그렇지 않으면 이 default구성은 이전에 요청을 처리하는 데 사용됩니다 custom-nginx-rules.

관련 정보