Nginx বিপরীত প্রক্সি পুনঃনির্দেশ


14

আমি nginxবিপরীত প্রক্সি হিসাবে ব্যবহার করছি এবং আমি যখন আমার ওয়েব ইন্টারফেসে লগইন করি তখন আমাকে প্রক্সিড ইউআরএলে পুনঃনির্দেশিত করা হয়। আমি এটি এড়াতে এবং সর্বদা "সার্ভার_নাম" টি ইউআরএল হিসাবে রাখতে চাই। এটা কি সম্ভব?

এটি আমার /etc/nginx/conf.d/my_app.conf:

server { 
    listen 443 ssl; 
    server_name my-app.net; 
    ssl_certificate /etc/pki/tls/certs/my-app.cer; 
    ssl_certificate_key /etc/pki/tls/private/my-app.key; 
    ssl_protocols TLSv1.1 TLSv1.2; 
    access_log /var/log/nginx/my-app.access.log main; 

    location / { 
        proxy_pass http://ip_of_the_app:7180/; 
        proxy_redirect off; 
    } 
} 

আমি সংযুক্ত http://my-app.netহয়েছি, লগইন তথ্য লিখি, আমি http://ip_of_the_app:7180একই লগইন পৃষ্ঠায় পুনঃনির্দেশিত হয়েছি এবং আমাকে আবার লগইন করতে হবে। এই ডাবল লগইন এড়ানো যায়?


tonio94, আপনার সমস্যার সমাধান করা হয়েছে? যদি হ্যাঁ, দয়া করে উত্তরটি গ্রহণ করুন। যদি না হয়, অনুগ্রহ করে কি অনুপস্থিত তা স্পষ্ট করুন।
সিএনএসটি

2
আমি গতকাল এটি পরীক্ষা করেছি, এটি কাজ করে, প্রক্সি_ড্রাইরেক্ট সরানোর প্রয়োজন। সাহায্যের জন্য ধন্যবাদ.
tonio94

উত্তর:


27

সেট করবেন না proxy_redirectকরার offযে করছেন না আপনি কি মনে করেন এটা করছে। proxy_redirectইউআরএল পুনর্লিখনের অনুরূপ কিছু সম্পাদন করে, উদাহরণস্বরূপ:

location /sales/ { 
    proxy_pass http://ip_of_the_app:7180/; 
    proxy_redirect http://ip_of_the_app:7180/ http://$host/sales/; 
}

এটি আপনাকে /sales/অন্য কোথাও পাথ হোস্ট করার অনুমতি দেয় । তবুও, ডিফল্ট পরামিতিগুলি proxy_redirectনিখরচায় আপনার জন্য ঠিক তা করে do ডিফল্ট হ'ল যা উপস্থিত রয়েছে তার মধ্যে অবস্থানটি পুনর্নির্দেশ করা proxy_pass(এবং আপনি যখন সেটআপ না proxy_redirectকরেন বা ব্যবহার করেন না তখন ডিফল্ট প্যারামিটারগুলি ব্যবহৃত হয় proxy_redirect default;)।

আপনার সেট করার দরকার নেই proxy_redirect


আপনি যা অনুপস্থিত তা হ'ল শিরোনামগুলি যা অ্যাপটিতে প্রেরণ করা দরকার। এর মধ্যে সবচেয়ে গুরুত্বপূর্ণটি হ'ল HOST। এটি পছন্দসই হিসাবে প্রক্সিং সম্পাদন করবে এবং ব্রাউজারে সঠিক URL রাখবে।

location / { 
    proxy_pass http://ip_of_the_app:7180/; 
    proxy_set_header HOST $host;
}

নোট করুন যে অ্যাপটি http://ip_of_the_app:7180/এখন Host: my-app.netহেডারের সাথে অনুরোধটি গ্রহণ করবে ।


আপনার আরও কয়েকটি শিরোনাম ব্যবহার করা উচিত:

proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;

এটি অ্যাপটিতে আরও ভাল লগিংয়ের অনুমতি দেবে http://ip_of_the_app:7180/X-Forwarded-Forপ্রকৃত ক্লায়েন্টের আইপি প্রদান ( nginxএস আইপির বিপরীতে ) এবং X-Forwarded-Protoক্লায়েন্টটি nginxএইচটিটিপি বা এইচটিটিপিএসের মাধ্যমে সংযুক্ত কিনা তা পরীক্ষা করে দেখুন ।


আপনার সাহায্যের জন্য ধন্যবাদ. প্রক্সি_ডাইরেক্টের প্রয়োজন হয় না তবে প্রক্সি_সেট_হেডার রেফারার ip_of_t__app: 7180 সঠিকভাবে কাজ করার জন্য সেট করতে হবে।
tonio94

@ tonio94 - ধন্যবাদ, আমি উত্তর আপডেট করেছি। নোট করুন যে সাধারণ ব্যবহারটি Refererকেবল $http_refererযা অনুরোধ থেকে অনুলিপি করে। অনুরোধটির রেফারার শিরোনাম না থাকলে এটি কাজ করে না, তাই এটি হার্ডকোডিং কিছু ক্ষেত্রে সমাধান।
গ্রোচামাল

@ জোনাথনকোমার - এর জন্য আপনাকে ধন্যবাদ, আপনি সঠিক, এখন সম্পাদিত। দুঃখিত, আপনার মন্তব্যটি লক্ষ্য করতে আমার কিছুটা সময় লেগেছে।
গ্রোচামাল

@ গ্রোকমাল ধন্যবাদ, আপনি মূলত এই তথ্যটি দিয়ে আমার জীবন বাঁচিয়েছেন: প্রক্সি_সেট_হেডার হোস্ট $ হোস্ট;
ওবায় আবদ-আলগাদার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.