web-dev-qa-db-ja.com

nginxでWindowsファイルパスを指定する方法

私はnginxの公式Windowsバージョンを使用しています。この構成に相当するウィンドウを指定したい

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

エイリアスディレクティブでWindowsファイルパスを指定するにはどうすればよいですか?これは可能ですか?

22
Vasil

これらの回答は古くなっているはずです。スラッシュを含むnginx 1.3.8絶対パスを使用すると機能します。バックスラッシュは機能するようですが、2倍にする必要があります。そうでない場合は、末尾の\"などの一部が文字どおりに使用されます。

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

引用符は必須ではないかもしれませんが、埋め込みスペースの場合には良い考えのようです。

もう1つ私が気付いたのは、末尾のスラッシュで終了するかどうかについてURLとエイリアスパスを一致させることが重要であるということです。これは不一致であり、機能しません。

17
Gringo Suave

次のような絶対パスを指定しようとすると...

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|
5
Jacob Wan

あなたはこれを試すことができます:

  1. 静的ファイルをnginx/html/staticfilesにコピーします
  2. nginx.confに設定

    場所/ static/{エイリアス/ nginx/html/staticfiles /; }

2

私のWindowsシステムではエイリアスがまったく機能しないようです。タイプしてみた

alias "c:"

しかし、これでもうまくいきません。また、nginxによって構成ファイルがリロードされた後、場所を出力する方法が見つかりません。したがって、単にnginxのWindowsでエイリアスを使用しないでください。

1
TonyTony

WindowsのNginxの場合、このメソッドを使用する必要があります。

場所/ foo {

ルートC:// pathtoyourfile/folder1/folder2;

ここで、fooはfolder2内の実際のフォルダーです。

0
chedlywalid