기본적인 NGINX를 배워보세요. 깨끗한 URL을 다시 작성하여 views라는 서버에서 호출된 하위 디렉터리의 파일로 리디렉션하려고 합니다.
아래 구성이 이를 수행합니다. 그러나 색인 페이지로 돌아갈 때마다 404 오류가 반환됩니다.
아래에서 볼 수 있듯이 저는 인덱스를 index.html로 정의합니다. 나는 이것이 index.html이 인덱스 파일로 취급되도록 보장할 것이라고 가정했습니다. 그러나 NGINX는 인덱스를 결정하기 위해 첫 번째 위치 블록을 사용하기로 선택한 것으로 보입니다. '/'가 인덱스이기 때문에 의미가 있습니다. 그러나 후속 페이지(예: nginx-practice.test/secondpage)에는 첫 번째 위치 블록만 사용하려고 합니다.
구성 파일은 다음과 같습니다.
server {
listen 127.0.0.1:80;
server_name nginx-practice.test;
root /usr/robertguttersohn/Sites/nginx-practice/public;
index index.html;
location ~ /. {
root /user/Sites/nginx-practice/public/views;
try_files $uri @htmlext =404;
}
location @htmlext {
rewrite ^(.*)$ $1.html last;
}
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
}
NGINX가 인덱스 페이지에 index.html을 사용하고 모든 후속 페이지에 다시 쓰기를 사용하도록 하려면 어떻게 해야 합니까?
답변1
location = / {}
홈 페이지에 대해서만 index.html 파일을 대상으로 지정한 다음 일반 location / {}
블록을 사용하여 후속 페이지를 대상으로 지정할 수 있습니다 . 여기에 예가 있습니다 ...
server {
listen 127.0.0.1:80;
server_name nginx-practice.test;
root /user/robertguttersohn/Sites/nginx-practice/public;
index index.html;
# To isolate home page
location = / { try_files /index.html =404; }
# To parse subsequent pages
location / {
root /user/robertguttersohn/Sites/nginx-practice/public/views;
try_files $uri @url.html =404;
}
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
}
보시다시피 location @htmlext {}
블록도 제거할 수 있습니다.
/user/robertguttersohn/Sites/nginx-practice/public
내 예에서는 루트 디렉터리와 /user/robertguttersohn/Sites/nginx-practice/public/views
하위 디렉터리로 사용했습니다 . 사용자 환경에 맞게 업데이트할 수 있습니다. 구성을 변경한 후에는 Nginx 서버를 다시 시작하는 것을 잊지 마세요.
위치 작동 방식에 대한 자세한 내용은 확인하세요.https://nginx.org/r/location.