কেন শুনুন 443 ডিফল্ট_সার্ভার; এনগিনেক্স নিয়ম ওভাররাইড ইতিমধ্যে কনফিগার করা নিয়ম (HTTP নিয়ম স্বাভাবিকভাবে কাজ করছে)?


9

আমার একটি এনগিনেক্স এবং বিভিন্ন সাবডোমেন রয়েছে:

a.mydomain.com
b.mydomain.com
c.mydomain.com

এনগিনেক্সের 4 টি বিধি রয়েছে:

1) পুনর্লিখনের নিয়ম:

server {
  listen 80
  server_name gl.udesk.org;

  root /nowhere;
  rewrite ^ https://a.mydomain.com$request_uri permanent;
}

2) https নিয়ম:

server {

  listen 443;
  server_name a.mydomain.com;

  root /home/a/a/public;

  ssl on;
  ssl_certificate conf.d/ssl/a.crt;
  ssl_certificate_key conf.d/ssl/a.key;
  ssl_protocols ...
  ssl_ciphers ...
  ssl_prefer_server_ciphers on;

  location ...
}

3) HTTP ডিফল্ট নিয়ম:

server {
  listen 80 default_server;
  return 444;
}

4) https ডিফল্ট নিয়ম:

server {
  listen 443 default_server;
  return 444;
}

সুতরাং আমি যদি nginx শুরু করি এবং:

  • যদি আমি ব্রাউজারে http://a.mydomain.com এ যাই তবে এটি https://a.mydomain.com এ পুনঃনির্দেশ করে এবং তারপরে এটি একটি ত্রুটি 107 (নেট :: ERR_SSL_PROTOCOL_ERROR) প্রদান করে: SSL প্রোটোকল ত্রুটি।
  • যদি আমি ব্রাউজারে https://b.mydomain.com এ যাই তবে আমি আশা করি এটি 444 ত্রুটি ফিরে পেয়েছে । তবে পরিবর্তে এটি একই ত্রুটি 107 প্রদান করে (নেট :: ERR_SSL_PROTOCOL_ERROR): এসএসএল প্রোটোকল ত্রুটি।
  • এবং তাই ডিএনএস সরবরাহকারী সিএনএম দ্বারা নিবন্ধিত সকলের জন্য (যেমন ক, খ, সি)
  • সমস্ত http- সংস্করণ (যেমন বিধি 3 -) প্রত্যাশার মতো কাজ করছে:

তাহলে এনজিএনএক্সের https বিধিগুলি কনফিগার করার জন্য এত জটিল এবং আমি কীভাবে এগুলি সঠিকভাবে কনফিগার করব যাতে এইচটিপি সংস্করণটির সাথে একই আচরণ করা যায়?

হালনাগাদ:

একটি নতুন শংসাপত্র তৈরি এবং যুক্ত করা হচ্ছে:

ssl on;
ssl_certificate conf.d/ssl/default.crt;
ssl_certificate_key conf.d/ssl/default.key;

এখন কাজ করে তবে কোনও এসএসএল শংসাপত্রের প্রয়োজন ছাড়াই আমার একটি সমাধান হবে। শংসাপত্র সরবরাহ না করেই https://a.mydomain.com ব্যতীত সমস্ত https (পোর্ট 443) সাবডমেনগুলির জন্য সমস্ত সংযোগ পুনরায় সেট করুন


2
আপনি পারবেন না। ওয়েব সার্ভারটি আপনি কোন ডোমেনটি চান তা জানার আগে SSL এর একটি শংসাপত্রের প্রয়োজন । এটি প্রেরণের জন্য একটি শংসাপত্র থাকতে হবে, বা এটি ক্লায়েন্টের সাথে কথা বলার জন্য সংযোগ স্থাপন করতে পারে না।
ডারথ অ্যান্ড্রয়েড

2
@ দারথঅ্যান্ড্রয়েড: যাদুটিকে বলা হয় এসএনআই - en.wikedia.org/wiki/Server_Name_Indication
শি

@ শি আমি এসএনআই সম্পর্কে সচেতন - এটি ওয়েবসভারটি কোন শংসাপত্রটি প্রেরণ করবে তা চয়ন করতে পারে তবে এটি এখনও একটি শংসাপত্র বাছাই করতে পারে । nginxব্যবহারকারী এটি করতে চায় তার জন্য এটির কোনও শংসাপত্রের প্রয়োজন নেই তা উপলব্ধি করতে যথেষ্ট স্মার্ট নয়।
ডারথ অ্যান্ড্রয়েড

উত্তর:


3

পোর্ট 443 এসএসএলের সাথে মিশ্রিত করবেন না! এনগিনেক্স সম্পূর্ণরূপে বন্দর অজোনস্টিক। আপনি পোর্ট 80 এর মাধ্যমেও https অফার করতে পারেন। আধুনিক এনগিনেক্স সংস্করণ অনুমতি দেয়

listen 1234 ssl;

এবং আপনার ssl on;তখন লাইনের দরকার নেই ।

তবে আপনি যদি https পরিবেশন করতে চান তবে আপনাকে একটি শংসাপত্র নির্দিষ্ট করতে হবে। আপনার সার্ভারটি https প্রবেশ করে যখন এটি কোনও https অনুরোধটিতে HTTP অনুরোধটিকে পুনরায় লিখন করে।

অন্য কোনও কিছুর আগে এসএসএল হ্যান্ডশেক করা হয়ে গেলে আপনি প্রোটোকল এরর পাবেন। সুতরাং return 444পৌঁছে না। এবং যে কোনও এসএসএল হ্যান্ডশেকের শংসাপত্র / প্রাইভেট কী জুটির সাহায্যে এনক্রিপশন অ্যালগরিদমগুলি খাওয়ানোর জন্য একটি শংসাপত্র এবং একটি ব্যক্তিগত কী প্রয়োজন।


3

returnনির্দেশ লেখা মডিউল অংশ। আপনি যদি ডকুমেন্টেশন চেক করেন , আপনি দেখতে পাবেন এটি অনুরোধগুলির সাথে কাজ করে। এইচটিটিপিএসে হ্যান্ডশেক শেষ হওয়ার পরে কেবল অনুরোধ করা যেতে পারে।

এখানে একটি বৈশিষ্ট্য অনুরোধ রয়েছে: https://trac.nginx.org/nginx/ticket/195 এবং একটি কার্যবিধির সমাধান সরবরাহ করা হয়েছে।

server {
    listen 443 ssl;
    server_name bbb.example.com;
    ssl_ciphers aNULL;
    ssl_certificate /path/to/dummy.crt;
    ssl_certificate_key /path/to/dummy.key;
    return 444;
}

নোট করুন এটি অ-এসএনআই-সক্ষম এইচটিটিপিএস ক্লায়েন্টদের (যেমন এনগিনেক্সের নিজস্ব হিসাবে proxy_passআপনি সেট না করা proxy_ssl_server_name on;) অন্য server_namesযে কোনও ব্যক্তির কাছে পৌঁছানো থেকে বিরতি ফেলবে (অত্যাবশ্যকীয় server_nameযে বৈধটি আপনি দিতে চান তা ভঙ্গ করবেন )। বিস্তারিত জানার জন্য trac.nginx.org/nginx/ticket/195# মন্তব্য মন্তব্য দেখুন ।
এনএইচ 2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.