nginx에서 index.html과 다른 파일을 추가하는 방법은 무엇입니까?

nginx에서 index.html과 다른 파일을 추가하는 방법은 무엇입니까?

그래서 저는 이것에 상당히 익숙하지 않으며 간단한 웹 페이지에서 nginx 서버를 실행하고 있습니다. 내가 가지고 있는 구성은 다음 sites-available과 같습니다.

server {
    listen 80 default_server;

    root /var/www/mywebsite/;
    index /html/index.html;

    server_name mywebsite.com www.mywebsite.com;

    location / {
            try_files $uri $uri/ =404;
    }
}

내 index.html은 다음 구조에 있습니다.

+------+   +----------+    
+ html +-->+index.html|    
+------+   +----------+    
       |      
       |   +--------------+
       +-->+scnd_page.html|
           +--------------+

에 액세스하면 mywebsite.com가 표시됩니다 index.html. 어떻게 가리킬 수 mywebsite.com/scnd_page/있습니까 send_page.html?

나는 몇 가지 물건을 만들어 보았습니다.

location /scnd_page { 
}

하지만 내가 올바른 길을 가고 있는지 확신할 수 없습니다. 이 파일에서도 이 작업을 수행할 수 있나요?

답변1

당신은 사용할 수 있습니다rewrite.html사용자에게 절대 표시되지 않도록 외부 리디렉션을 발행해야 합니다 .try_files실제 파일을 제공합니다.

location / {
    rewrite     ^(/.*)\.html$   $1  redirect;
    try_files $uri $uri/index.html $uri.html =404;
}

하지만 /$암시하기 위해 후행 슬래시를 지원하는 것은 권장하지 않습니다 . \.html$이러한 지원에 대한 논리는 약간 추악할 뿐만 아니라 해당 내에서 상대 URL을 사용하려고 하면 추가 문제가 발생할 수도 있습니다 scnd_page.html.

답변2

위치 블록 내부에 index 매개변수를 구성할 수 있습니다.

location /html/scnd_page { index scnd_page.html; }

또한 scnd_page.html을 전역적으로 "보조" 색인으로 정의할 수도 있습니다.

server {

listen 80 default_server;

root /var/www/mywebsite/;
# carefull setting '/html/index.html'...
index index.html scnd_page.html;

server_name mywebsite.com www.mywebsite.com;

location / {
        try_files $uri $uri/ =404;
}

}

관련 정보