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


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.