web-dev-qa-db-ja.com

nginxで画像を提供する方法

私はnginxを完全に使い始めて、ズームレベルに応じて分けられたマップタイルを提供する方法を見つけるように求められます。画像ファイルの構造は~/data/images/7/65/70.pngに似ています。7はズームレベル、65と70は経度と緯度の値です。フォルダ65には、71.png、72.pngなどの多くのファイルが含まれています。

Nginxを適切にインストールしましたが、Welcome to nginxメッセージが表示されます。 http://nginx.org/en/docs/beginners_guide.htmlの指示に従い、/data/wwwおよび/data/imagesディレクトリを作成しました。 index.htmlファイルを/data/wwwの下に配置し、タイル画像を/data/imagesの下に配置しました。次に、httpタグに次の行を追加して、構成ファイルを変更しました。

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

設定ファイルをリロードしてブラウザにlocalhostと入力すると、index.htmlファイルを取得できず、画像も表示されません。

私がしようとしているのは、次のように入力したときに画像を表示することです。

http://localhost/1.0.0/basemap/7/65/70.png
  • 7:7番目のズームレベルを示すフォルダー
  • 65:緯度を示すフォルダ
  • 70.png:経度を示すファイル(フォルダー65には多数のpngファイルが含まれています)

何が欠けていますか?

13
iso_9001_

わかりました。何か説明します。「[nginxへようこそ]」または何かが表示される原因となるファイルであるdefaultというファイル内に定義されているlocalhostサーバーがすでにあります。 t同じserver_nameを使用して新しいサーバーを作成し、それを削除して、ローカルホストにそれらのイメージのみを提供させます。

  • 最初にsites-enabledからdefaultファイルを削除する必要があります。元に戻す場合は、sites-available内にまだ存在します。 sites-enabled内のすべてのファイルは、sites-available内のファイルからのシンボリックリンクであることに注意してください)
  • sites-available内に新しいファイルを作成し、images-appなど、好きな名前を付けます。
  • images-appファイル内に新しいサーバーを作成します。アプリのルートは/dataというフォルダー内にあると想定します。もちろん、独自のサーバー構造にマップします。

    server {
        server_name localhost;
        root /data;
        index index.html;
        location / {
            try_files $uri =404;
        }
    }
    
  • 次に、sites-enabledに移動し、sites-available内に作成したこのサイトを有効にします

    Sudo ln -s /etc/nginx/sites-available/images-app /etc/nginx/sites-enabled/
    
  • すべてのnginx設定が正しいことを確認してください

    Sudo nginx -t
    
  • 何も問題がなければ、先に進んでnginx設定をリロードできます

    Sudo service nginx reload
    
17

私はnginxも初めてです。MohammadAbuShadyの回答と同様の私のソリューションは次のとおりです。

  • 削除sites-enabled/default
  • whatever.conf in /etc/nginx/conf.d/

その理由は:

sites-enabled/defaultはサーバーを定義しました

/ var/www/htmlで80のルート権限をリッスンしている

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  root /var/www/html;
  location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}

nginx.confファイルには他のconfファイルが含まれています

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

許可に注意を払う

my.confの最初のエディションは/ home/scotv /のrootですが、403 Forbiddenエラーが発生します。error.logを確認してください:

2016/04/07 20:12:44 [error] 12466#0: *2 open() "/home/scotv/data/a" failed (13: Permission denied), 
client: 127.0.0.1, server: , request: "GET /a HTTP/1.1", Host: "localhost"
3
scozv

私の場合、/etc/nginx/sites-enabled/defaultファイルを編集しました。

私は次の設定を追加しました:

location /images/ {
            root /data;
        }

/data/imagesの下に画像を配置:

enter image description here

とURLは動作します: http://localhost/images/example.png

SuperUserとしてVS Codeを使用しています。 (私はそれが悪いことを知っています、しかし私はリスクを受け入れます)それはルートアクセスファイル編集で多くの助けになります:

enter image description here

1
Teoman shipahi