এনগিনেক্স: এসএসএলকে একটি পথে বাধ্য করুন, অন্যদিকে এসএসএল করুন না


27

আমার সাইটের কেবল একটি পাথের উপর এসএসএলকে বাধ্য করার জন্য এবং বাকী সমস্ত অংশে নন-এসএসএলকে কীভাবে এনগিনেক্স সিফ ফাইল সেট আপ করব?

উদাহরণস্বরূপ, আমি চাই / ব্যবহারকারীর অধীনে থাকা সমস্ত ইউআরএলই https হওয়া উচিত তবে বাকী সমস্ত ইউআরএলই এইচটিপি হতে হবে।

প্রথম অংশের জন্য আমার কাছে রয়েছে:

rewrite ^/user(.*) https://$http_host$request_uri?;

আমি "যদি" ব্যবহার করতে চাই না। আমি ধরে নিয়েছি এটি ক্রিয়াকলাপের আদেশের সুবিধা নেবে তবে আমি কোনও লুপ শেষ করতে চাই না।

উত্তর:


38

আপনার এনগিনেক্স কনফিগারেশনে আপনার দুটি "সার্ভার" অঞ্চল থাকা উচিত। 80 পোর্টের জন্য একটি, এবং 443 পোর্টের জন্য একটি (নন-এসএসএল এবং এসএসএল)। আপনার এসএসএল পৃষ্ঠায় আপনাকে পুনঃনির্দেশ করতে কেবল আপনার নন-এসএসএল ওয়েবসাইটে কোনও অবস্থান যুক্ত করুন।

server {
    root /var/www/
    location / {
    }
    location /user {
        rewrite ^ https://$host$request_uri? permanent;
    }
}

এটি ব্যবহারকারীর থেকে শেষ হওয়া সমস্ত ট্র্যাফিক আপনার https: // সার্ভারে ফরোয়ার্ড করবে।

তারপরে, আপনার 443 সার্ভারে, আপনি বিপরীতটি করেন।

server {
    listen 443;
    root /var/www/
    location / {
        rewrite ^ http://$host$request_uri? permanent;
    }
    location /user {
    }
}

2
এই পদ্ধতিটি ভাল, তবে এটি বেশ কয়েকটি সাধারণ পিটফলসের মধ্যে পড়ে , বিশেষত "লোকেশন ব্লকের অভ্যন্তরে মূল" এবং "পুনর্লিখনের পুনর্লিখন"
কলবিজ্যাক

1
আমি সম্পাদনা করেছি। দেখতে কি ঠিক আছে? আমি 80 শুনি এবং http_host যুক্ত করেছি।
pbreitenbach

এই কনফিগারেশনটি দিয়ে, কোনও ব্যবহারকারী যখন সাইটের পৃষ্ঠাগুলি নেভিগেট করে, ইউআরএলগুলির জন্য এসএসএল শুরু হয় /userএবং অন্য সমস্ত url- এর জন্য নন-এসএসএল সংযোগটি সক্রিয় হয় / থেকে এসএসএল / নন-এসএসএল থেকে স্যুইচ করে । ফলস্বরূপ, এমনকি ব্যবহারকারী স্পষ্টভাবে https://www.example.com/ব্রাউজারের ঠিকানা বারে টাইপ করে, ফলাফল পৃষ্ঠাটি http://www.example.com/। এই উত্তরে বর্ণিত সেটিংস দ্বারা প্রাপ্ত এসএসএল / নন-এসএসএল-এর মধ্যে অটো-ইউআরএল-পুনর্লিখনটি প্রয়োগ করার কোনও উপায় কি তবে এখনও যদি স্পষ্টভাবে অ্যাড্রেস বারে ব্যবহারকারী দ্বারা টাইপ করা থাকে তবে স্পষ্টত এসএসএল অনুরোধটিকে সম্মান করবেন? ধন্যবাদ!
বিদায়

@ গুডবাইরা হ্যাঁ যদি ধারণাটি ব্যবহারকারীদের কিছু নির্দিষ্ট জায়গায় এসএসএল ব্যবহার করতে বাধ্য করে, তবে আমরা তাদের প্রোটোকলগুলি ওভাররাইড করতে পারি তবে ৪৪৩ সার্ভার কনফিগারেশন থেকে পুনর্লিখনের আদেশগুলি সরিয়ে অন্য যে কোনও জায়গায় তাদের সম্মান জানাতে পারি। অবশ্যই, এখন তারা যখন কোনও সুরক্ষিত অংশে যায়, তারা অন্য কোথাও গেলে তারা এখনও এসএসএল দিয়ে ব্রাউজ করবে তবে এটি লোককে যেতে যেতে এসএসএল ব্যবহার করার সুযোগ দেয়।
চক শুকনো

13

এনগিনেক্স একই serverব্লকের মধ্যে এইচটিটিপি এবং এইচটিটিপিএস উভয়কেই প্রক্রিয়া করতে দেয় । সুতরাং আপনাকে দুজনের জন্যই নির্দেশের সদৃশ করতে হবে না এবং আপনি যে পথটি সুরক্ষিত করতে চান তা পুনর্নির্দেশ করতে পারেন

server {
  listen 80 default_server;
  listen 443 ssl;
  ... ssl certificate and other configs ...

  location /user {
    if ($scheme = 'http') {
      rewrite ^ https://$http_host$request_uri? permanent;
    }
  }

  ... your basic configuration ...
}

সেখানে লাইন স্থাপন না করার বিষয়ে নিশ্চিত ssl onহন কারণ এটি সরল এইচটিটিপিটি ভেঙে দেবে।

Allyচ্ছিকভাবে, আপনি এইচটিটিপিএস থেকে অন্য সমস্ত অনুরোধগুলি একইভাবে HTTP এ পুনঃনির্দেশ করতে পারেন:

if ($scheme = 'https') {
  rewrite ^ http://$http_host$request_uri? permanent;
}

আপডেট : অ্যালেক্সি টেন বিনীতভাবে মন্তব্য বিভাগে উল্লেখ করেছেন, schemeপ্রতিটি অনুরোধটি পরীক্ষা করা খুব উজ্জ্বল ধারণা নয়। আপনার এনজিএনএক্স কনফিগার করার ঘোষিত পদ্ধতি অনুসরণ করা উচিত। এই ক্ষেত্রে, পুনর্নির্দেশগুলি সহ দুটি সার্ভার ব্লক ঘোষণা করুন location, সাধারণ যুক্তিকে একটি পৃথক ফাইলে সরান এবং includeএটি উভয়ই। সুতরাং গ্রুফটেকের উত্তর আরও ভাল।


2
প্রতিটি অনুরোধের জন্য এনগিনেক্স চেক স্কিম তৈরি করা অকার্যকর।
অ্যালেক্সি টেন

1
আমি জানি যে প্রশ্নটির উত্তর 3 বছর আগে দেওয়া হয়েছিল, তবে আমি ধীরে ধীরে যা করেছি তা করতে সংগ্রাম করার সময় আমি এটি পেয়েছি এবং কেবল আমার পদক্ষেপগুলি অনুসরণ করবে এমন লোকদের সাথে আমার ফলাফল ভাগ করে নিতে চেয়েছিলাম।
হ্নাত

1
ঠিক আছে, আপনার wiki.nginx.org/IfIsEvil
আলেক্সি টেন

1
@ অ্যালেক্সাএইটেন "কেস আপনি যদি এফ ব্যবহার করা এড়াতে পারবেন না" তেমন কথা নয়? নির্দেশের সদৃশ ছাড়াই এইচটিটিপি এবং এইচটিটিপিএসের জন্য একই কনফিগারেশন করার অন্য কোনও উপায় আছে কি?
হ্নাত

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