2017-11-09 1 views
1

의 nginx 버전을 작동하지 않는 것 :에는 OpenSSL 1.0.2g로 구축의 nginx/1.10.3 (우분투) 1 삼월 2016 TLS SNI 지원 을 통해 설치 가능 HTML5를 사용하여 를 apt-get을 기본으로 상용구 설정 프로젝트Nginx의 루트 지시어는

나는 간단한 작업을하려고 노력하고 있으며 생각했던 것처럼 작동하지 않습니다. 나는 디렉토리 구조과 같이 있습니다

/var/www$ tree 
. 
├── docroot 
│   └── files 
│    ├── booger.txt 
│    └── favicon.ico 
└── static 
    ├── h5bp 
    │   ├── humans.txt 
    │   ├── js 
    │   │   ├── main.js 
    │   │   ├── plugins.js 
    │   │   └── vendor 
    │   │    ├── jquery-1.12.0.min.js 
    │   │    └── modernizr-2.8.3.min.js 
    │   ├── tile.png 
    │   └── tile-wide.png 

내가 가장 좋은 방법은 docroot를/파일 서버 루트 (실제의 docroot)가 다음 정적 파일의 루트를 다시 정의 생각했다. 여기 내 기본 설정은에서의/etc/nginx를/사이트 이용 가능한 :

# Choose between www and non-www, listen on the *wrong* one and redirect to 
# the right one -- http://wiki.nginx.org/Pitfalls#Server_Name 
# 
server { 
    listen [::]:80 default_server; 
    listen 80 default_server; 

    # listen on all hosts 
    server_name _; 

    # and redirect to the https host (declared below) 
    # avoiding http://www -> https://www -> https:// chain. 
    return 301 https://www.ubercode.io$request_uri; 
} 

server { 

    # listen [::]:443 ssl http2 accept_filter=dataready; # for FreeBSD 
    # listen 443 ssl http2 accept_filter=dataready; # for FreeBSD 
    listen [::]:443 ssl http2 deferred default_server; # for Linux 
    listen 443 ssl http2 deferred default_server; # for Linux 
    # listen [::]:443 ssl http2; 
    # listen 443 ssl http2; 

    # The host name to respond to 
    server_name www.ubercode.io; 

    include h5bp/directive-only/ssl.conf; 

# root /var/www/docroot/files; 
    root /var/www; 
    index index.html index.htm index.nginx-debian.html; 

    # return forbidden for any php, asp, jsp, our .dt templates, or myadmin requests 
# location ~ (\.dt$|myadmin|\.php$|\.jsp$|\.asmx$|\.asp$) { 
#  deny all; 
# } 

# location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { 
#  expires 1d; 
# } 
# location ~* \.(pdf)$ { 
#  expires 5d; 
# } 

    # static 
    location /static/ { 
# root /var/www; 
    autoindex on; 
#  expires 1d; 
    } 

    location/{ 
    alias /var/www/docroot/files; 
    autoindex on; 
    } 
    #Specify a charset 
    charset utf-8; 

    # Custom 404 page 
    error_page 404 /404.html; 

    # Include the basic h5bp config set 
    include h5bp/basic.conf; 
} 

server { 
    listen [::]:443 ssl http2; 
    listen 443 ssl http2; 

    # listen on the wrong host 
    server_name _; 

    include h5bp/directive-only/ssl.conf; 

    # and redirect to the non-www host (declared below) 
    return 301 https://www.ubercode.io$request_uri; 
} 

내가이 표시됩니다 같은 정적 파일이 작동하지만 루트에있는 별명이 그들이 던져으로 작동하지 않는 것 그것을 사용하는 경우 404. 만약/location과/var/www 서버 루트 밑의 별칭에 주석을 달고 다른 라인의 주석 처리를 제거하면 서버는 docroot/files 자산을 반환하지만 정적 파일은 반환하지 않습니다. 위치 블록 내부의 가장 중요한 루트가 작동하지 않는 것처럼 보입니다. 아무도 무슨 일이 일어날 지 설명하고 그것을 해결할 수있는 방향을 제시 할 수 있습니까?

+0

그래서 위에서 말한 것은 정확히 사실이 아닙니다. 웬일인지, 브라우저에 booger.txt의 URL을 넣었을 때 결과는 나오지만 favicon.ico는 그렇지 않습니다. jpeg 및 html 파일로 테스트했지만 기쁨은 없습니다. 그러나 어떤 이유로 booger.txt 파일이 작동하지 않습니다. 어떤 아이디어? –

답변

1

가 표시됩니다처럼 그것을 사용하는 경우, 정적 파일이 작동하지만 그들은이 404

당신은 alias 지시어를 사용해서는 안 던져로 에서 별명이 루트가 작동하지 않는 것 location / 성명 동일한 값을 가진 root 문을 대신 사용하십시오.

나는/위치에서 별명을 언급하고있는 경우는/var/www가 서버 루트 후 주석 서버가 ​​docroot를/파일 자산하지만 정적 파일을 반환하는 다른 라인. 당신이 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$을 사용하는 경우

는, 다음은 location /static/ 블록을 재정의합니다, 후자에서 root에 대한 값을 설정하면 무시됩니다. 또한 .ico으로 끝나는 URI의 location / 블록을 덮어 쓰므로 /favicon.ico은 더 이상 다른 문서 루트의 URI로 작동하지 않습니다.

how nginx processes a request을 참조하고 정규식 위치가 접두사 위치보다 우선합니다.

expires 값을 미세 조정해야하는 경우, 영향을받는 문서 루트를 고려하지 않고 location 블록을 추가 할 수 없습니다.

map 지시문을 사용하여 $request_uri을 기준으로 expires 값을 설정하는 대체 접근 방법은 this answer을 참조하십시오.

+0

답장을 보내 주셔서 감사합니다./location 블록에서 별명을 root로 변경하면 여전히 동일한 결과가 나타납니다. 위치 블록 안의 루트 지시문이 적용되지 않는 것과 거의 같습니다. 다른 주석은 주석 처리 된 만기 헤더와 함께 있습니다.이것은 2 개의 다른 docroot 위치를 호스팅 할 수있는 어떤 것도 표시하거나 가리 키지 않습니다. –

+0

리서치 크레딧은 약간 연구 한 후에 그의 답변이 사실이기 때문에 제공합니다. 정규 표현식 검색을 방지하려면 별칭 대신 root를 사용해야합니다. 그러나 누군가가 나중에 방문하면 문제는 html5 상용구 구성 프로젝트와 관련이 있습니다. 그것은 문제를 야기한 이미지와 같은 어딘가에 우선합니다. 기지로 돌아 가면 고정 된 것들을 설치합니다. –