nginx에서 Windows 파일 경로를 지정하는 방법


22

nginx의 공식 Windows 버전을 사용하고 있습니다. 이 구성과 동등한 창을 지정하고 싶습니다.

location /static/ {
   alias /home/user/staticfiles/;
}

별칭 지시문에서 Windows 파일 경로를 어떻게 지정합니까? 이것도 가능합니까?

답변:


17

답변이 최신이 아니어야합니다. 슬래시와 함께 nginx 1.3.8 절대 경로를 사용하면 작동합니다. 백 슬래시는 작동하는 것 같지만 두 배가되어야합니다. 그렇지 않은 경우 후행과 같은 일부 \"문자가 그대로 사용됩니다.

location /static/ {
    # alias "C:\\foo\\bar\\...\\static\\";
    alias "C:/foo/bar/.../static/";
    expires 90d;
}

따옴표는 필요하지 않지만 공백이 포함 된 경우 좋은 생각처럼 보입니다.

내가 주목 한 또 다른 것은 슬래시로 끝나거나 끝나지 않는 URL과 별칭 경로를 일치시키는 것이 중요하다는 것입니다.


여전히 nginx 1.8.1에서 작동
Daniel

공백을 처리하기 위해 따옴표를 사용하라는 조언이 많이 도움이되었습니다!
이길

5

다음과 같은 절대 경로를 지정하려고하면 ...

location / {
    alias C:\Users\SomeUser\mysite\static;
}

... 그 위치에서 파일을 요청하면 C : \ nginx \ logs \ error.log에 다음과 같은 오류가 표시 될 것입니다.

2011/11/11 12:53:16 [error] 6236#0: *1 open() "/cygdrive/c/nginx/C:\Users\SomeUser\mysite\static\somefile.css

Windows에서 nginx를 구성 할 때 C : \ nginx 디렉토리에 상대적인 경로를 지정하십시오. 이것은 작동합니다 :

location / {
    alias ../Users/SomeUser/mysite/static;
}

개인적으로, 나는 nginx 구성이 Windows와 Linux 사이에서 예상보다 조금 이식 가능하기 때문에 이것을 배우게되어 기뻤습니다. Linux 구성 파일을 Windows에서 작동하는 파일로 바꾸려면 기본적으로 다음과 같습니다.

s|/home/myname/|../Users/Myname|

이것은 nginx 1.9.10과 함께 작동합니다. 감사합니다!
NenadP

2

당신은 이것을 시도 할 수 있습니다 :

  1. 정적 파일을 nginx / html / staticfiles로 복사
  2. nginx.conf로 설정

    위치 / static / {별명 / nginx / html / staticfiles /; }


1

내 Windows 시스템에서 별칭이 전혀 작동하지 않는 것 같습니다. 나는 타이핑을 시도했다

alias "c:"

그러나 이것조차도 작동하지 않습니다. 그리고 nginx가 구성 파일을 다시로드 한 후 위치를 출력하는 방법을 찾을 수 없습니다. 따라서 nginx의 창에서 별칭을 사용하지 마십시오.


nginx 1.5.6의 경우 다음 설정이 작동합니다. alias ../../cde/folder;nginx.exe가 d : / abc / nginx에 있지만 별칭을 지정하려는 폴더가 d : / cde / folder에 있다고 가정합니다. 일부 소스는 nginx가 경로로 하드 코딩되어 있다고 언급 하는데,이 /cygdrive/c/nginx/경우 alias /cygdrive/d/path/사용해야하지만 이것은 효과가 없습니다. 또한 별칭 경로의 끝에서 슬래시를 무시해서는 안된다는 것을 언급 할 가치가 있습니다.
TonyTony

nginx.conf를 Linux에서 win10으로 마이그레이션하려고합니다. nginx 실행 파일은 C : \ nginx에 있고 제공된 파일은 D : / bellaria_web / haus에 있습니다. '루트 D : / bellaria_web / haus /;'컨텍스트 작동하지 않는 것 같습니다. 누군가 무엇이 잘못되었는지 설명 할 수 있습니까?
aag

0

Windows의 Nginx의 경우이 방법을 사용해야합니다.

위치 / foo {

루트 C : // pathtoyourfile / folder1 / folder2;

} 여기서 foo는 folder2 내의 실제 폴더입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.