Nginx- এর প্রক্সি_ইন্টারসেপ্ট_অরফার্সের নির্দেশিকাটির সঠিকভাবে কাজ করার জন্য পুনর্লিখনের প্রয়োজন কেন?


8

নীচে একটি নমুনা Nginx সার্ভার কনফিগারেশন রয়েছে। "ম্যাজিকাল তাবিজ" অবস্থান ব্লক ব্যতীত, প্রক্সিড ত্রুটি সামগ্রীটি কাস্টমাইজড ত্রুটি পৃষ্ঠা পরিবেশন করার পরিবর্তে একটি Nginx 404 পৃষ্ঠাতে ফলাফল দেয়।

প্রক্সি_ইন্টারসেপ্ট_অরফারস ডাইরেক্টিভ সরানো একটি যথাযথ http ত্রুটি কোড শিরোনাম সহ প্রক্সি ত্রুটি পৃষ্ঠা সরবরাহ করে।

অজানা ত্রুটির পৃষ্ঠাগুলি যাদুকরী তাবিজের উপস্থিতি নির্বিশেষে সঠিকভাবে রেন্ডার করা হয়।

ঠিক কি চলছে সে সম্পর্কে কোনও ধারণা?

server {
    server_name     mydomain.com "";
    listen          80;
    root            /var/www;
    error_page      400 401 402 403 404 500 501 502 503 504 /admin/error_page.htm;
    proxy_intercept_errors on;

    location /proxy/ {
        proxy_read_timeout  60s;
        proxy_set_header    Host $host;
        proxy_pass          http://myservers;
    }

    location /test404/ {
        return 404;
    }

    location /admin/ {    # this line constitute a magical talisman that fixes proxied error interception(???)(!)
        rewrite ^(/admin)(.*)$ /admin$2 break;
    }
}

উত্তর:


4

আমি দুঃখিত, এই উত্তরটি দেরিতে কিক করে দেয়, এখনকার মতো, বর্তমান ভি 1.8.1 স্থিতিশীল সংস্করণ সহ, আপনি যে কনফিগারেশন সরবরাহ করেছেন তা কোনও তাবিজ ছাড়াই কাজ করা উচিত ।

আপনি যে সংস্করণটি ব্যবহার করছেন সেটি যদি সরবরাহ করে থাকেন তবে কোনও ত্রুটি সংশোধন করা হয়েছে কিনা বা কনফিগারেশনটি ত্রুটিযুক্ত ছিল কিনা তা দেখার ধারণা হবে।

আমি আপনাকে আপনার কনফিগারেশনটি দ্বিগুণ পরীক্ষা করার পরামর্শ দিচ্ছি, কারণ আপনার অবশ্যই এই /admin/অবস্থানটির প্রয়োজন নেই বা এতে থাকা rewriteনির্দেশিকা নেই। যা এই পরীক্ষার অংশ নয় এবং যা হস্তক্ষেপ করতে পারে তার সমস্ত কিছুই অপসারণ করার জন্য খুব বিশেষ যত্ন নিন।

শেষ অবলম্বন হিসাবে, আপনি নিম্নলিখিত, সফলভাবে পরীক্ষা করা, কনফিগারেশন স্নিপেট চেষ্টা করতে পারেন এবং ধীরে ধীরে পরিবর্তনগুলি সংহত করতে পারেন এবং ফলাফলটি প্রত্যাশাগুলি থেকে বিচ্ছিন্ন হয়ে দেখুন:

server {
    listen      80;
    listen      [::]:80;
    server_name example.org;

    location /proxy {
        return 418 "Host: $host, Connection: $http_connection";
    }
}

server {
    listen      80;
    listen      [::]:80;
    server_name example.com;

    root /var/ious/files;

    error_page 418 = /error_page.html;
    proxy_intercept_errors on;

    location /proxy {
        proxy_pass http://example.org;
    }
}

ধন্যবাদ, বার্নার্ড আমি আপনার উত্তরটিকে স্বীকৃত হিসাবে চিহ্নিত করছি যেহেতু পর্যাপ্ত সময় পেরিয়ে গেছে যে মূল প্রশ্নটি উত্থাপিত হওয়ার সময় আমি আর এনগিনেক্স সংস্করণটির বিরুদ্ধে যা পরীক্ষা করছিলাম তা আর মনে করতে পারছি না।
অউব্রি ফ্যালকনার 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.