এনজিআইএনএক্স হেডকে জিইটি অনুরোধে রূপান্তর করে


10

কিছু ভয়াবহ নকশার সিদ্ধান্তের কারণে, আমাদের কাছে একটি অ্যাপ্লিকেশন রয়েছে যা HTTP হেড অনুরোধগুলির প্রতিক্রিয়া জানাতে অক্ষম (রিটার্নগুলির 'পদ্ধতি অনুমোদিত নয়')। সঠিকভাবে হেড অনুরোধগুলি ফিরিয়ে দেওয়ার জন্য সফ্টওয়্যারটি পরিবর্তন করা কঠিন, অসম্ভব নয় তবে অতিরিক্ত কাজ। অ্যাপ্লিকেশনটি একটি এনজিআইএনএক্স প্রক্সির পিছনে বসে আছে, আমি ভাবছিলাম যে এনজিআইএনএক্স থেকে গ্রাহকদের কাছ থেকে প্রাপ্ত হেড অনুরোধগুলি ব্যাক-এন্ডে জিইটি অনুরোধগুলিতে রূপান্তর করার কোনও উপায় আছে, তবে শিরোনাম ব্যতীত প্রতিক্রিয়াটি বাতিল করে এটিকে আবার প্রেরণ করুন ক্লায়েন্ট যেমন আমাদের অ্যাপ্লিকেশন সার্ভারগুলি হেড অনুরোধগুলির প্রতিক্রিয়া জানাতে সক্ষম হয়েছিল।

বর্তমান কনফিগারেশন (মোটামুটি মানক)

upstream ourupstream{
    server unix:/var/apps/sockets/ourapp.socket.thread1
    server unix:/var/apps/sockets/ourapp.socket.thread2
    server unix:/var/apps/sockets/ourapp.socket.thread3
    [like 20 of these]
}

server {
    listen       1.2.3.4:80;
    server_name  ourapp;

    access_log  /var/apps/logs/ourapp.nginx.plog    proxy;
    error_log   /var/apps/logs/ourapp.nginx.elog    info;

    gzip on;

    gzip_types  text/plain text/html;

    proxy_intercept_errors on;
    proxy_connect_timeout 10;
    proxy_send_timeout 10;
    proxy_read_timeout 10;
    proxy_next_upstream error timeout;
    client_max_body_size 2m;

    error_page 404 /static/404.html;
    error_page 500 501 502 503 504 =500 /static/500.html;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://ourupstream/;
    }

    location /static/ {
        root /var/apps/global/;
    }
}

আপনি কীভাবে অনুরোধটি ব্যাকএন্ডে যাচ্ছেন? proxy_pass? fastcgi_pass? আপনি কি আপনার বর্তমান কনফিগারেশন পেস্ট করতে পারেন? আপনি কোন এনগিনেক্সের সংস্করণটি চালাচ্ছেন?
কলবিজ্যাক

@ কলবিজ্যাক প্রক্সি_পাস ইউনিক্স সকেট ব্যবহার করে, এনজিআইএনএক্স 1.1.12 এবং দেবের 1.0.01, উত্পাদনে 1.0.11 (আমরা শিগগিরই উত্পাদনকে 1.1.12 এ নিয়ে যাচ্ছি)
31 ই

উত্তর:


5

যেহেতু আপনি প্রক্সি_পাস ব্যবহার করছেন তাই আমার মনে হয় আপনাকে কিছু ত্রুটি_পৃষ্ঠা অপব্যবহার করতে হবে (এবং যেহেতু আপনি ইতিমধ্যে ত্রুটি_পৃষ্ঠাগুলি ব্যবহার করছেন তাই আপনাকে পুনরাবৃত্ত ত্রুটি পৃষ্ঠাগুলি সক্ষম করতে হবে)। আমি মনে করি এটি আপনার পক্ষে কাজ করবে:

upstream ourupstream{
    server unix:/var/apps/sockets/ourapp.socket.thread1
    server unix:/var/apps/sockets/ourapp.socket.thread2
    server unix:/var/apps/sockets/ourapp.socket.thread3
    [like 20 of these]
}

server {
    listen       1.2.3.4:80;
    server_name  ourapp;

    access_log  /var/apps/logs/ourapp.nginx.plog    proxy;
    error_log   /var/apps/logs/ourapp.nginx.elog    info;

    gzip on;

    gzip_types  text/plain text/html;

    proxy_intercept_errors on;
    proxy_connect_timeout 10;
    proxy_send_timeout 10;
    proxy_read_timeout 10;
    proxy_next_upstream error timeout;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 2m;

    error_page 404 /static/404.html;
    error_page 500 501 502 503 504 =500 /static/500.html;

    location @force_get {
        recursive_error_pages on;
        proxy_method GET;
        proxy_pass http://ourupstream;
    }

    location / {
        error_page 550 = @force_get;
        if ($request_method = HEAD) { return 550; }
        proxy_pass http://ourupstream;
    }

    location /static/ {
        root /var/apps/global/;
    }
}

এটি এখনও ক্লায়েন্টের কাছে দেহটি ফিরিয়ে দেবে বলে মনে হয় এমনকি মাথা দিয়ে অনুরোধ করা হলেও। শরীরের সামগ্রী খণ্ডন / উপেক্ষা করার কোনও উপায় আছে কি?
8:38

আমি আশা করছিলাম এটি মনে রাখবে যে আসল অনুরোধটি হ'ল হেড এবং দেহটি ফেলে দিন। আমি এটি ঘটানোর অন্য কোনও উপায় সম্পর্কে ভাবতে পারি না, দুঃখিত।
কলবিজ্যাক

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