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


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.