বিপরীত প্রক্সি - সাব ডিরেক্টরিটি সরান


27

অদূর ভবিষ্যতে আমি 3 এনগিনেক্স সার্ভার রাখব। অন্য দুটির জন্য এসএসএলের বিপরীত প্রক্সি। সুতরাং, উদাহরণস্বরূপ, আমি এখানে যাচ্ছি:

https://www.mysitename.com/site1

এই উদাহরণে অন্য দুটি সার্ভার হ'ল সাইট 1 এবং সাইট 2। আমি প্রক্সিতে এসএসএল শংসাপত্র ইনস্টল করেছি এবং আমি একটি বিপরীত প্রক্সি ব্যবহার করতে চাই (এসএসএল সমস্ত প্রয়োজন নয় যেহেতু 3 টি অভ্যন্তরীণ নেটওয়ার্কে রয়েছে)। পরীক্ষার উদ্দেশ্যে আমি এসএসএল / বিপরীত প্রক্সিটির জন্য 443-এ শুনতে পাচ্ছি, শুনুন 8081 পোর্ট যা সাইট 1 এর জন্য একটি রেল অ্যাপ্লিকেশন, এবং 8082 সাইট 2 এর জন্য।

আমার আছে এটা...

server {
    listen                  443;
    server_name             mysitename.com;

    ssl                     on;
    ssl_certificate         ssl/mysitename.com.crt;
    ssl_certificate_key     ssl/mysitename.com.key;
    keepalive_timeout       60;

    location /site1 {
        proxy_pass http://localhost:8081;
        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_redirect http:// https://;
    }

    location /site2 {
        proxy_pass http://localhost:8082;
        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_redirect http:// https://;
    }
}

সুতরাং আমি যখন www.mysitename.com/site1 ঘুরে দেখি আমি চাই যে এটি সাধারণত মূলত লোকালহোস্ট থেকে আসে: 8081 (অথবা পরে লাইনটি অন্য সার্ভারের জন্য একটি অভ্যন্তরীণ আইপি) থেকে ফিরে আসে।

লোকালহোস্ট কল থেকে এটি "সাইট 1" কেটে ফেলার কোনও উপায় আছে কি? এটি যা করছে বলে মনে হচ্ছে তা হল লোকালহোস্ট: 8081 / সাইট1। সাইট 1 এবং সাইট 2 সাইটগুলি কোনও "সাইট 1" ছাড়াই "/ লগইন / সূচক" বা "/ যাই হোক না কেন / তালিকা", ইত্যাদি প্রকৃতির of

সাইট কন্ট্রোলারগুলিতে পুনর্নির্দেশগুলিও রয়েছে (redirect_to ব্যবহার করে) যা / লগইন / সূচী / যে কোনও কিছু / তালিকার মতো জিনিস থেকে যায়।

সাইট 1 ব্যবহার করার জন্য আমি কি সাইটের ইউআরএলগুলি নতুনভাবে ডিজাইন করতে যাচ্ছি? অথবা এনজিআইএনএক্স প্রক্সিটি এটি বের করতে পারে?

ধন্যবাদ।


সকেট.ইও এর জন্য এটিকে পুনরায় লেখার চেষ্টা করুন /(.*) /sket.io/ ব্রেক; serverfault.com/questions/444532/…
ব্যবহারকারী 956584

উত্তর:


53

Http://nginx.org/r/proxy_pass উদ্ধৃত :

যদি প্রক্সি_পাসটি ইউআরআই-এর সাথে নির্দিষ্ট করা থাকে, সার্ভারে একটি অনুরোধটি পাস করার সময়, অবস্থানের সাথে মিল থাকা একটি সাধারণ অনুরোধের ইউআরআই অংশটি নির্দেশে নির্দিষ্ট ইউআরআই দ্বারা প্রতিস্থাপন করা হয়:

location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}

এটি হল, আপনাকে এটির proxy_passমতো ব্যবহার করতে হবে :

location /site1/ {
    proxy_pass http://localhost:8081/;
    ...
}

উল্লেখ্য চিহ্ন /মধ্যে proxy_passডিরেক্টিভের - এটা অবস্থান, অর্থাত দ্বারা মেলানো অরিজিনাল URI অংশ প্রতিস্থাপন করবে /site1/


2
সমস্যাটি সমাধানের জন্য এটি যা যা করেছিল তা হ'ল! তার জন্য ধন্যবাদ. এখন আমি কীভাবে redirect_to পরিচালনা করব - তা নির্ধারণ করার জন্য - তবে এটি কোনও সার্ভারের প্রশ্ন নয় তাই আমি এটি অন্য কোথাও খুঁজে বের করব।
ক্রোমাগ

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