প্রমাণীকরণের জন্য কোনও হোস্টের কাছে প্রক্সি থেকে এনগিনেক্স কীভাবে ব্যবহার করবেন?


41

আমি কীভাবে একটি এনজিনেক্স প্রক্সি_পাস নির্দেশিকা সেটআপ করতে পারি যাতে প্রক্সি হোস্টে প্রেরিত HTTP বেসিক প্রমাণীকরণের তথ্যও অন্তর্ভুক্ত থাকে?

আমি যে ইউআরএলটিতে প্রক্সির প্রয়োজন তা এটির একটি উদাহরণ:

http://username:password@192.168.0.5/export?uuid=1234567890

শেষ লক্ষ্যটি হ'ল প্রক্সি সার্ভারের ইউআরআই প্রকাশ না করেই 1 টি সার্ভারকে অন্য সার্ভারের (আমরা যার সাথে প্রক্সিং করছি) উপস্থিত করার অনুমতি দেওয়া। এখানে পাওয়া এনজিনেক্স কনফিগারেশন অনুসরণ করে আমার এখন এই 90% কাজ সঠিক হয়েছে:

http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/

প্রক্সি সার্ভারে প্রেরণের জন্য আমাকে কেবল HTTP বেসিক প্রমাণীকরণ যুক্ত করতে হবে


@all: নিশ্চিত হন আপনার যা দরকার HTTP বুনিয়াদি প্রমাণীকরণ এই সলিউশন ব্যবহার করেন - না HTTP- র ডাইজেস্ট প্রমাণীকরণ;) বেশ একটি কঠিন সময় প্রায় ডিবাগ পর্যন্ত আমি এটা মূর্ত আউট ছিল ... stackoverflow.com/questions/9534602/...
— SimonSimCity

উত্তর:


57

আমি কিছুক্ষণ আগে এই উপর একটি লিখিত আপ করেছি। বিস্তারিত এখানে দেখুন:

http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html

উদাহরণ স্বরূপ:

 location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://6.6.6.6:80;
    proxy_set_header Authorization "Basic a2luZzppc25ha2Vk";
 }

"a2luZzppc25ha2Vk" হ'ল "কিং: isnaked" বেস 64 এনকোডেড, যাতে এটির জন্য কাজ করবে

HTTP: // রাজা: isnaked@6.6.6.6

আরও বিশদ জন্য নিখরচায় ব্লগ পোস্ট।


2
লিঙ্কটি নষ্ট হয়েছে
— অ্যালেক্স

1
লিঙ্কটি এখন এখানে রয়েছে: shairosenfeld.blogspot.com/search?q=nginx যদি কেউ ভাবছেন
— ckm

1
আমার আরও কিছু কঠিন দরকার
— ইলজা

7
আপনার সমাধান যথেষ্ট নমনীয় নয়। এটি ব্যবহারকারীর নাম এনকোড করা খুব কার্যকর হতে পারে: উড়ে পাসওয়ার্ড। প্রথমত, এনজিনেক্স অবশ্যই ব্যবহারকারীর নাম পার্স করতে হবে: ইউআরএল থেকে পাসওয়ার্ড, দ্বিতীয়ত, এনজিনেক্স অবশ্যই এই ডেটা এনকোড করে উপযুক্ত হেডারে সেট করতে হবে। আমি এনকোডযুক্ত শংসাপত্রগুলিকে হার্ডকোড করতে চাই না।
— জনি

আমার সেটআপটিতে চেষ্টা করার সময় আমি "খারাপ অনুরোধ" পাই .. কোনও ধারণা?
— স্পোক করুন

21

আমি আলভোসুর উত্তরটি দিয়ে এই কাজটি পেয়েছি তবে বেস 64 স্ট্রিংয়ের উদ্ধৃতিটির ভিতরে আমাকে "বেসিক" শব্দটি প্রবেশ করতে হয়েছিল সুতরাং এটি দেখতে এটির মতো দেখাচ্ছে:

proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";

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

1
আমি nginx wiki.nginx.org/HttpSetMiscModule#set_encode_base64 এর সাথে বেস 64 এ কীভাবে এনকোড করব তা খুঁজে পেয়েছি । এটি হার্ডকডযুক্ত শংসাপত্রগুলির চেয়ে বেশি কার্যকর।
— জনি

@ দস্তাবেজগুলিতে জহ্নির লিঙ্কগুলি এখন এখানে রয়েছে: github.com/openresty/set-misc-nginx- Module#set_encode_base64
— আল দাস


2

অনুমোদনের শিরোনামটি সরান যা nginx এর সাহায্যে এগিয়ে যায় proxy_set_header Authorization "";।

আমি বেসিনিক লেখার জন্য এনজিনেক্সকে কনফিগার করেছি তবে Authorizationশিরোলেখটি proxy_passনির্দেশের সাথে সাথেই পাশ হয়ে যাচ্ছিল এবং প্রাপ্তির শেষটি টোকেনটি পরিচালনা করতে পারেনি।

# Basic Auth
auth_basic "Private Stuff";
auth_basic_user_file /etc/nginx/.htpasswd;

location /server {
    proxy_pass http://172.31.31.140:9090;
    proxy_set_header Authorization "";
}

(আমার ক্ষেত্রে নির্দিষ্ট, এই ত্রুটিটি ফিরে এসেছিল Reason: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken)

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