문제: 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
default
nginx 에서 심볼릭 링크를 제거 /etc/nginx/sites-enabled
하고 다시 시작하십시오.
그렇지 않으면 이 default
구성은 이전에 요청을 처리하는 데 사용됩니다 custom-nginx-rules
.