2017-11-09 22 views
1

nginxのバージョン動作していないようです:nginxの/ 1.10.3(Ubuntuの)を のOpenSSL 1.0.2gで構築された2016年3月1日 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 

私は最善のアプローチは、ドキュメントルート/ファイル(実際のドキュメントルート)のサーバーのルートを持って、その後、静的ファイルのルートを再定義することだと思いました。それが示されているように私はそれを使用する場合は、静的なファイルが動作

# 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; 
} 

彼らが投げるように、rootの別名が動作していないよう:ここに私のデフォルトの設定は、/ etc/nginxの/サイト利用可能です404.もし/ locationと/ var/wwwサーバルートの下のエイリアスにコメントをつけ、他の行のコメントを外すと、サーバはdocroot/filesアセットを返しますが、静的ファイルは返しません。ロケーションブロック内の優先ルートがうまく動作しないようです。誰でも何が起こっているのか説明して、それを修正する方法を教えてもらえますか?

それが示されているように私はそれを使用する場合は、静的なファイルが動作
+0

私は、上記のことはまったく真実ではないようです。何らかの理由で、私がブラウザにbooger.txtのURLを置くと結果は得られますがfavicon.icoは表示されません。私もjpegとhtmlファイルでテストしましたが、喜びはありません。しかし何らかの理由でbooger.txtファイルが機能します。何か案は? –

答えて

1

しかし、彼らはあなたがaliasディレクティブを使用してはならない404

を投げるよう ルートにエイリアスが動作するようには思えませんlocation /ステートメントに記載されています。代わりに同じ値を持つrootステートメントを使用してください。

他のラインサーバはドキュメントルート/ファイル 資産が、ノー静的ファイルを返すのコメントを解除私はその後/場所と/ var/WWWサーバ ルートの下に別名をコメントする場合。

あなたがlocation ~* \.(jpg|jpeg|png|gif|ico|css|js)$を有効にした場合、それはlocation /static/ブロックを上書きすると、後者の中rootための任意の値を設定は無視されます。また、.icoで終わるURIのlocation /ブロックを上書きします。そのため、/favicon.icoは別のドキュメントルートのものとして動作しなくなります。

how nginx processes a requestを参照してください。正規表現の場所がプレフィックスの場所よりも優先されることに注意してください。

expiresの値を微調整する必要がある場合は、どのドキュメントルートに影響するかを考慮せずにlocationブロックを追加することはできません。

$request_uriに基づいてexpires値を設定するmapディレクティブを使用して、別のアプローチのためのthis answerを参照してください。

+0

リチャード・リチャードに感謝します。/locationブロックのエイリアスをrootに変更しても、私は同じ結果を得ます。ロケーションブロック内のルートディレクティブが適用されないのとほぼ同じです。あなたの他のコメントは、コメントアウトされた期限切れのヘッダー付きです。これは、2つの異なるdocrootの場所をホストできるようにするものではありません。 –

+0

少しリサーチした後、彼の答えが真だから、私はリチャード・クレジットを与えています。正規表現の検索を避けるには、エイリアスの代わりにrootを使うべきです。しかし、後で誰かが訪れると、問題はhtml5定型設定プロジェクトと関係があります。それは問題を引き起こしたイメージなどをオーバーライドしています。ベースに戻って固定されたものをインストールします。 –