প্রতিক্রিয়া শিরোনাম অবস্থানের nginx প্রক্সি_পাস পুনর্লিখন


11

এই এনগিনেক্স উদাহরণটির উদ্দেশ্য হ'ল গিটল্যাব এবং ওপেনডাব্লুআরটি লুসি একটি বিপরীত প্রক্সি মাধ্যমে পুনর্নির্দেশ করা। এটি ইতিমধ্যে বেশ কয়েকটি অন্যান্য ওয়েবসাইটের জন্য কাজ করছে, যার একটি বেস ইউআরএল রয়েছে যা এই সমস্যাটিকে পাল্টে দেয় বলে মনে হয়।

  • এই উদাহরণে গিটল্যাব 9000 বন্দরে স্থানীয় সার্ভারে রয়েছে।
  • Nginx ওয়েবসাইট 8080 বন্দরে রয়েছে।
  • ওপেনডব্লিউআরটিতে ঠিক একই সমস্যা রয়েছে তবে / সিজি-বিন / লুচি /

উদাহরণ অবস্থানের জন্য প্রাসঙ্গিক nginx কনফিগারেশন;

location /gitlab/ {
    proxy_pass http://127.0.0.1:9000/;
    proxy_redirect default;
}
  • নোট করুন যে ফলাফলগুলি একটি পিছনে স্ল্যাশ সহ এবং এর সাথে একই।

এই অবস্থানটিতে কিছু শিরোনাম প্রক্সি কনফিগারেশন বিকল্প প্রয়োগ করা হচ্ছে।

# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# Basic Proxy Config
proxy_set_header    Host $host:$server_port;
proxy_set_header    Origin $scheme://$host:$server_port;    
proxy_set_header    Connection $http_connection;
proxy_set_header    Cookie $http_cookie;
proxy_set_header    Upgrade $http_upgrade;
proxy_set_header    X-Forwarded-Protocol $scheme;
proxy_set_header    X-Scheme $scheme;
proxy_set_header    X-Real-IP $remote_addr;
proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header    X-Forwarded-Ssl on;
proxy_set_header    X-Frame-Options SAMEORIGIN;

# Advanced Proxy Config
send_timeout            5m;
proxy_read_timeout      300;
proxy_send_timeout      300;
proxy_connect_timeout   300;

proxy_buffers 32 4k;
proxy_buffer_size           4k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;

proxy_http_version 1.1;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;]
  • পরিবর্তে # প্রক্সি_সেট_হেডার হোস্ট মন্তব্য করা ব্রাউজারটিতে পুনঃনির্দেশ করে https://127.0.0.1:9000/users/sign_in

ব্রাউজ করার সময় https://website.com:8080/gitlab/;

GET /gitlab/ HTTP/1.1
Host: website.com:8080

প্রতিক্রিয়া ভুলভাবে /users/sign_inপরিবর্তে ফিরে ফিরে/gitlab/users/sign_in

HTTP/1.1 302 Found
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Location: https://website.com:8080/users/sign_in

Https: // ওয়েবসাইটটিতে ম্যানুয়ালি ব্রাউজিং : 8080 / গিটল্যাব / ব্যবহারকারী / সাইন_ইন পৃষ্ঠাটি লোড করে তবে উপরের মত একই সমস্যা না হওয়া পর্যন্ত কোনও সম্পদ হ্রাস পাবে না।

গিটল্যাব সম্পদ ব্যর্থ

এনজিনেক্স ডক্স পড়া , এটি প্রস্তাব দেয় যে ডিফল্ট প্রক্সি আচরণটি এই দৃশ্যটি হ্যান্ডেল করা উচিত, যদিও এটি ব্যর্থ বলে মনে হচ্ছে।

লগগুলি তেমন দেখাবে বলে মনে হচ্ছে না।

এটি কেন ঘটতে পারে তা নির্ণয় করতে আরও কী কী পদক্ষেপ নেওয়া উচিত?

উত্তর:


3

আপনার proxy_passটার্গেটে একটি ট্রেলিং স্ল্যাশ যুক্ত করুন ।

আপডেট: ওপিসহ vhost গ্রহণ করছে তা সুনির্দিষ্ট করে নি https। যেহেতু স্কিমটি সংযোজন শিরোনাম সহ ব্যাকএন্ড সার্ভারে ফরোয়ার্ড করা হয়, তারপরে একটি সমস্যা দেখা দেয় যেহেতু proxy_redirect default;এনজিনেক্স আদেশ দেয় যে HTTP স্কিমটি ডিফল্টরূপে প্রত্যাবর্তন করতে হয় যখন Locationhttps এর পরিবর্তে শীর্ষ প্রবাহের জবাবগুলিতে শিরোনামগুলি পুনরায় লিখতে হয়।

সুতরাং, এটি আরও জেনেরিক আকারে স্পষ্টভাবে পরিবর্তন করতে হয়েছিল (পিছনের স্ল্যাশ এখনও প্রয়োজনীয়):

location /gitlab/ {
    proxy_pass http://127.0.0.1:9000/;
    proxy_redirect $scheme://$host:$server_port/ /gitlab/;
}

হাই জাভিয়ার, উত্তরের জন্য ধন্যবাদ। ভাগ্য নেই। এটি আমার মধ্যে অন্যতম চেষ্টা করা হয়েছে (প্রক্সিপাস ডক্সের সাথে মিলছে) তবে কোনও পরিবর্তন নেই :(
জেক এডওয়ার্ডস

আমি প্রক্সি_সেট_হেডার সম্পর্কে তথ্য যুক্ত করেছি যা অন্য কনফিডে ছিল। হোস্ট লাইনটি সরিয়ে ফেলা জিনিসগুলি পরিবর্তন করে - 127.0.0.1:9000/users/sign_in এ
জেক এডওয়ার্ডস

ঠিক আছে তাই সমস্যাটি হ'ল HTTP প্রত্যাশিত আচরণের schemeসাথে (https) proxy_redirect default। হোস্ট শিরোনামটি মন্তব্য করার আগে কনফিগারেশনটিকে যেমন ছিল তেমন করুন এবং এতে proxy_redirectসামগ্রী পরিবর্তন করুন $scheme://$host:$server_port/ /gitlab/;। পরীক্ষা করার সময় আপনি ব্রাউজারের ক্যাশেড শিরোনামগুলি (ক্লাইট সরঞ্জামগুলি বা ব্যক্তিগত নেভিগেশন ব্যবহার করুন) টিপছেন না তা নিশ্চিত করুন।
জাভেয়ের লুকাস

ঠিক আছে, দুর্দান্ত, সুতরাং এটি এখন সঠিক ইউআরএল নিয়ে যায় (কমপক্ষে গিটল্যাব করে, ওপেনডাব্লুআরটি এখনও / সিজি-বিন / লুচিতে যায় - যদিও এটি একবারে রয়েছে)। তবে কোনও সম্পদ / চিত্র / ইত্যাদি নেই - 8080 / সম্পদ / অ্যাপ্লিকেশন -5ec1aeb4604cbfbeff836f956308b0ed.js এর পরিবর্তে: 8080 / গিটল্যাব / সম্পদ / অ্যাপ্লিকেশন -5ec1aeb4604cbfbeff836f956308b0ed.js
জ্যাক এডওয়ার্ডস

1
@ শ্যাডোএক্সভিআইআই সম্পদ লিঙ্কগুলি আপনার অ্যাপ্লিকেশন দ্বারা তৈরি করা হয়েছে, আপনাকে অবশ্যই এটি সেখানে পরিবর্তন করতে হবে। এনগিনেক্স কেবল আপনার অ্যাপ্লিকেশন দ্বারা প্রকাশিত পুনর্নির্দেশগুলি পুনরায় লিখবে, পৃষ্ঠাগুলির সামগ্রী নয়।
জাভিয়ের লুকাস

0

@ জাভিয়ারলুসাস যা বলেছেন তা ব্যাকডকে সঠিক বলে লিঙ্কগুলি পরিচালনা করতে হবে। গিটল্যাব ডকুমেন্টেশনের একটি আপেক্ষিক URL এর অধীনে গিটল্যাব ইনস্টল করুন শিরোনামে একটি গাইড রয়েছে । গিটল্যাব এবং এনগিনেক্স ইনস্টল করে একটি খিলান লিনাক্স সার্ভার স্থাপন করার সময় আমি এই সমস্যায় পড়েছি এবং এটি সঠিকভাবে আপেক্ষিক পথ ধরে সমস্ত সম্পদ পুনরায় সংশ্লেষ করে আমার সমস্যার সমাধান করেছে।

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