4

私はドキュメントを読み、例をスキャンしましたが、これが機能しない理由を一生理解できません。私はnginxにまったく慣れていないので、これがばかげた単純な答えである場合は、簡単にしてください。

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

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

    server {
                listen       80;
                server_name  localhost domain.com;

                root /home/TMlabs/server_files;
                index index.html index.htm;

                location = /othersite {
                    root /home/TMlabs/server_files/location2;
                    index index.html index.htm;
                }

                location / {
                    root   /home/TMlabs/server_files/location1;
                    index  index.html index.htm;
                }

        }

さらに含める必要がある場合はお知らせください。nginx.conf全体をダンプします。ただし、それはかなり基本的なことです。

私が達成しようとしているのは、domain.comを場所で指定されたルートにマッピングし/(これは機能しています)domain.com/othersite、そのディレクティブで指定されたルートにマッピングすることだけです。何らかの理由で、フォルダーからのファイルではなく、/home/TMlabs/server_files/location1/index.html移動するとドキュメントが返されます。等号を削除して、一致に使用できるさまざまな演算子を使用しようとしましたが、何も機能しないようです。おそらく、私が誤解しているのはかなり基本的なものであり、このようなものには慣れていません。私も正規表現が苦手です。誰か啓発したいですか?domain.com/othersiteindex.html/home/TMlabs/server_files/location2

編集:何が起こっているのかは、実際には私のディレクティブを完全に無視していて、単に/usr/share/nginx/wwwドキュメント ルートとして使用していると思います。この設定はどこにもありません。私は何が欠けていますか?

4

2 に答える 2

3

プレフィックスは、=指定された場所が要求されたURLと完全に一致する必要があることを意味します。エラーログを調べると、Nginxがファイル [...]/location2/othersideではなくファイルを提供しようとしていることがわかります[...]/location2/index.{html,htm}。(簡単にするためにフルパスは省略されています)

indexディレクティブは、完全一致の場所内のnoopです。

これを回避するには、ファイルの名前をに変更しothersideて、この構成にすることができます

location = /otherside {
    root /home/TMlabs/server_files/location2;
}

またはaliasディレクティブを使用します

location = /otherside {
    alias [...]/location2/index.html;
}

PS:NginxはContent-Type、URLの拡張子によって応答を把握しようとします。/otherside拡張子がないため、application/octet-streamブラウザがコンテンツをダウンロードしようとする原因となります。

.html拡張機能を含めるか、default_type内部でディレクティブを 使用できますlocation

default_type "text/html";
于 2012-08-28T02:44:29.133 に答える
0

以下はトリックを行う必要があります:

server {
        listen       80;
        server_name  localhost domain.com;

        root /home/TMlabs/server_files;
        index index.html index.htm;

        location / { try_files location1/$uri location1/$uri/; }
        location /othersite { try_files location2/$uri location2/$uri/; }
}
于 2012-08-25T11:37:31.960 に答える