সাবফোল্ডার ব্যবহার করে এনগিনেক্স প্রক্সি_পাস


11

ঠিক আছে, এই কাজটি সহজ হওয়া উচিত তবে আমি এটি কাজ করতে পারি না। আমি আমার ডোমেন নামের (প্রকৃতপক্ষে সেই ডোমেন নামের আইপির পরে) একটি সাবফোল্ডার রাখতে চাই, যা একই সার্ভারে একটি নির্দিষ্ট পোর্টে পুনঃনির্দেশ করে। মূলত, আমি অনেক বন্দর ব্যবহার করে মুক্তি পেতে চাই।

এখানে তার জন্য আমার nginx কনফিগারেশন

server {
    listen 80;

    index index.html index.htm index.nginx-debian.html index.php;

    server_name aaa.bbb.ccc.ddd;

    location ^~ /app2 {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://aaa.bbb.ccc.ddd:8001;
    }
}

সুতরাং aaa.bbb.ccc.ddd / app2 অ্যাক্সেস করার পরে আমি এটি http: //aaa.bbb.ccc.ddd: 8001 এ সমাধান করতে চাই ।

এটি সম্ভবত জটিল হতে পারে তা নোট করতে পারে। আমি এখানে কি মিস করছি?

ধন্যবাদ প্যাট


আপনার অর্থ কি "কোনও বন্দরে পুনর্নির্দেশ" বা "একটি বন্দরে প্রক্সি" আছে? তারা বেশ আলাদা। আপনার প্রশ্নটি অস্পষ্ট, সম্ভবত আপনি ক্লায়েন্ট সহ আপনার ব্যবহারের ক্ষেত্রে প্রসারিত করতে পারেন।
টিম

উত্তর:


12

যেহেতু আপনি এটিকে বিপরীত প্রক্সি প্রশ্ন হিসাবে ট্যাগ করেছেন, আমি ধরে নিয়েছি আপনি বোঝাতে চেয়েছেন যে আপনি অনুরোধটি প্রক্সি করতে চান যাতে ব্যবহারকারী কেবল http://aaa.bbb.ccc.ddd/app2তার ব্রাউজারে ইউআরএল দেখতে পান ।

আপনি আপনার locationব্লকটি এতে পরিবর্তন করতে পারেন :

location ~/app2(.*)$ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://aaa.bbb.ccc.ddd:8001$1;
}

এখানে আমরা পরে কোনো URI অংশ ক্যাপচার /app2করার $1পরিবর্তনশীল, এবং এটি ব্যবহার proxy_passনির্দেশ।


ধন্যবাদ. কান্ডা কৌতুকটি করেছিল। aaa.bbb.ccc.ddd: 8001 কেবলমাত্র আংশিকভাবে প্রদর্শিত হবে। সেই পৃষ্ঠাতে ওয়েবসকেট এবং প্রচুর জাভা স্ক্রিপ্ট রয়েছে। আমি অনুমান করি যে কারণ আমি বন্দরের প্রক্সি করি এবং টিম উপরে উল্লিখিত হিসাবে ফরোয়ার্ড করি না। কেবলমাত্র এনগিনেক্স ব্যবহার করে এটি অর্জন করা কি সম্ভব?
pAt84

উত্সের URL গুলি aaa.bbb.ccc.ddd:8001পৃষ্ঠাতে দেখতে কেমন ? সম্ভবত /app2অংশটি ধারণ করতে আপনার ইউআরএলগুলি ঠিক করতে হবে ।
টেরো কিলকেনেন

এটি সত্যিই কেবল একটি ওয়েবসকেট (কিছু রাডার ডেটা, স্বয়ংচালিত দেখায় ...)। উত্স কোডটিতে "অ্যাপ 2" এর কোনও চিহ্ন নেই।
pAt84

ঠিক আছে, হ্যাঁ ওয়েবসকেটকে ফোন করতে জেএস "var ws = নতুন ওয়েবস্কট ('ডাব্লুএস: //' + লোকেশনহোস্ট + '/ ডাব্লুএস');" ব্যবহার করে; লোকেশনহোস্ট এখন পোর্ট নম্বরটি মিস করে, যা পুরো জিনিসটি আর কাজ করে না।
pAt84

ঠিক আছে, তাই দেখে মনে হচ্ছে একবার একবার আমি aaa.bbb.ccc.ddd / app2 কল করি আমার অভ্যন্তরীণভাবে এটি aaa.bbb.ccc.ddd: 8001 ব্যবহার করা প্রয়োজন। আরেকটি বিকল্প হ'ল সমস্ত জাভা স্ক্রিপ্ট পরিবর্তন করা। যুক্তিটি হ'ল আমি আমাকে "ওয়ান-পোর্ট-সলিউশন" দেওয়ার জন্য এনগিনেক্স ব্যবহার করতে চাই তবে আমি অ্যাক্সেস করার পরে (যেমন HTTP // aaa.bbb.ccc.ddd / app2 এর উপরে) আমার অভ্যন্তরীণভাবে এটি দরকার aaa.bbb.ccc.ddd: 8001 এ ফিরে যান। এটা কি সম্ভব?
পিএটি 84
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.