এনজিএনএক্সে সর্বদা একটি ফাইল ফিরতে আমি কীভাবে কোনও অবস্থান ব্লক কনফিগার করব?


12

আমার অ্যাপ্লিকেশনটিতে আমি অবস্থানটি "/" একটি স্ট্যাটিক ইনডেক্স html ফাইলটি ফিরিয়ে আনতে চাই, আমি একটি ফোল্ডার থেকে স্থিতিশীল ফাইলগুলি পরিবেশন করতে "/ স্থিতিশীল" চাই এবং অন্য সমস্ত অনুরোধগুলি 404 নম্বরের মতো ফিরে পাওয়া চাই। পরবর্তী সময়ে আমি অন্য সমস্ত অনুরোধগুলি ডাব্লুএসজিআই সার্ভারে পুনর্নির্দেশ করতে যাচ্ছি।

এটি বর্তমানে আমার কনফিগারেশন:

# Dev server.
server {
    listen 1337;
    charset UTF-8;

    location / {
        rewrite ^ static/index_debug.html break;
    }

    location /static {
        alias /home/tomas/projects/streamcore/static;
    }
}

স্ট্যাটিক ফোল্ডারটি নিখুঁতভাবে কাজ করছে, তবে "/" 404 নট ফন্ডে ফিরছে। আমি চেষ্টাও করেছি:

alias /home/tomas/projects/streamcore/static/index_debug.html;

লোকেশন ব্লকে, তবে এটি 500 টি ইন্টার্নাল সার্ভার এরর প্রদান করে। মনে হচ্ছে aliasএকক ফাইল পছন্দ করে না। অতিরিক্তভাবে আমি চেষ্টা করেছি:

try_files static/index_debug.html;

কিন্তু এটি সার্ভারটি "ট্রাইফাইলেস নির্দেশনায় অবৈধ সংখ্যক যুক্তি" ত্রুটি দিয়ে শুরু করতে থামায়। স্পষ্টতই try_filesআসলে আপনার একাধিক ফাইল চেষ্টা করা দরকার যা আমি খুঁজছি এমন আচরণ নয়।

সুতরাং আমার প্রশ্নটি হল: আমি স্থির ফাইলটি সর্বদা ফিরতে কীভাবে কোনও অবস্থান ব্লকটি কনফিগার করব?


সম্পাদনা: আমি অন্যান্য উত্তরগুলি থেকে দেখেছি যা aliasসত্যই কোনও একক ফাইলকে যুক্তি হিসাবে গ্রহণ করা উচিত, তাই আমি চেষ্টা করেছি:

location = / {
    alias /home/tomas/projects/streamcore/static/index_debug.html;
}

তবে আমি এখনও 500 টি ইন্টার্নাল সার্ভার এরর পেয়েছি। "/" অনুরোধের জন্য ত্রুটি লগটি বলে:

[সতর্কতা] 28112 # 0: * 7 "/ home/tomas/projects/streamcore/static/index_debug.htmlindex.html" ডিরেক্টরি নয়

কেন এটি "সূচক_দেবগ। Htmlindex.html" খোলার চেষ্টা করছে? আমি indexনির্দেশটি কোথাও ব্যবহার করছি না ।


আপনি কি পারবেনtry_files static/index_debug.html static/index_debug.html;
সেজেজোজ

@ সিজেজোজ: আপনার পরামর্শের চেষ্টা করে location =/আমি ৪০৪ টিও পাচ্ছি না, location /আমি ৫০০ টি অভ্যন্তরীণ সার্ভারের ত্রুটি পেয়েছি।
হুব্রো

যদি আমি ভুল না হয়ে থাকি তবে আপনি সূচীর নির্দেশনাটি মিস করছেন ... যে কোনও ওয়েবসারভার সর্বদা সূচক ফাইলটি সন্ধান করবে, মূল ইউআরআই সরবরাহ করে (/), আমি মনে করি আপনি এটি যুক্ত করে এটিকে ওভাররাইড করতে পারেন:location / { return 404; }
মার্টিনো ডিনো

@ মার্টিনোডিনো: আমার কেন এটি দরকার? এবং যেখানে?
হুব্রো

location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
মার্টিনো দিনো

উত্তর:


10

কেবল এটি পরীক্ষা করা হয়েছে এবং এটি আমার পক্ষে কাজ করে:

server {
    root /tmp/root;
    server {
        listen 8080;
        location /static {
            try_files $uri =404;
        }
        location / {
            rewrite ^ /static/index_debug.html break;
        }
    }
}

ফাইল /tmp/root/static/index_debug.htmlঅবশ্যই আছে :)

আমি যে কোনও ইউআরএল হিট করতে পারি এবং আমি কেবল স্থির পৃষ্ঠাটি পাই।


0

আপনি চেষ্টা_ফায়াল ব্যবহার করতে পারেন এবং পুনর্লিখন সহ একটি নামক স্থানে পুনর্নির্দেশ করতে পারেন। এটার মত:

server {
    root /tmp/root;
    server {
        listen 8080;

        location / {
            try_files $uri $uri/ @index;
        }

        location @index {
            rewrite ^ static/index_debug.html break;
        }
    }
}

এতে যদি ফাইল বিদ্যমান থাকে /tmp/rootতবে তা পরিবেশন করা হবে, অন্যথায় ইউরিতে আবার লেখা হবে static/index_debug.htmlএবং এটি পরিবেশন করা হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.