ঠিক করুন "সাধারণ এইচটিটিপি অনুরোধটি এইচটিটিপিএস বন্দরে প্রেরণ করা হয়েছিল" এনগিনেক্সে ত্রুটি


এই নিবন্ধে, আমরা এনগিনেক্স এইচটিটিপি সার্ভারের "400 খারাপ অনুরোধ: সাধারণ HTTP অনুরোধটি HTTPS বন্দরে প্রেরণ করা হয়েছিল" কীভাবে সমাধান করবেন তা দেখাব। আপনি যখন এইচটিটিপি এবং এইচটিটিপিএস উভয় অনুরোধগুলি পরিচালনা করতে Nginx কনফিগার করার চেষ্টা করেন তখন সাধারণত এই ত্রুটি দেখা দেয়।

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

আমরা নীচে নমুনা এসএসএল কনফিগারেশনটিও বিবেচনা করব (সুরক্ষার কারণে আমরা প্রকৃত ডোমেন নাম পরিবর্তন করেছি), যা এনজিঙ্ক্সকে 80 এবং 443 উভয় পোর্টই শুনতে বলে।

server{
        listen 80;
        server_name example.com www.example.com;
        return 301 https://www.example.com$request_uri;
}
server {
        listen 443 ssl http2;
        server_name example.com www.example.com;

        root   /var/www/html/example.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example.com/example.com_access_log;
        error_log   /var/log/nginx/example.com/example.com_error_log   error;

        # SSL/TLS configs
        ssl on;
        ssl_certificate /etc/ssl/certs/example_com_cert_chain.crt;
        ssl_certificate_key /etc/ssl/private/example_com.key;

        include /etc/nginx/ssl.d/ssl.conf;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/html/example.com/;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {

                root   /var/www/html/example.com/;
                fastcgi_pass   127.0.0.1:9001;
                #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
}

উপরের কনফিগারেশনটি ব্যবহার করে, একবার কোনও ক্লায়েন্ট পোর্ট 80 অর্থাত্ http://example.com এর মাধ্যমে আপনার সাইটে অ্যাক্সেস করার চেষ্টা করলে প্রশ্নে ত্রুটিটি নীচের স্ক্রিন শট হিসাবে প্রদর্শিত হবে।

আপনি এই ত্রুটিটি সম্মুখীন হন কারণ প্রতিবার কোনও ক্লায়েন্ট এইচটিটিপি এর মাধ্যমে আপনার সাইটে অ্যাক্সেস করার চেষ্টা করে, অনুরোধটি HTTPS এ পুনঃনির্দেশিত হয়। এটি হ'ল কারণ এনজিন্স আশা করে যে লেনদেনে এসএসএল ব্যবহার করা হবে তবুও মূল প্রয়োজনের টি (পোর্ট ৮০ এর মাধ্যমে প্রাপ্ত) সরল এইচটিটিপি ছিল, এটি ত্রুটির সাথে অভিযোগ করে।

অন্যদিকে, যদি কোনও ক্লায়েন্ট https://example.com ব্যবহার করে তবে তারা উপরের ত্রুটির মুখোমুখি হবে না। এছাড়াও, যদি আপনার অন্য ওয়েবসাইটগুলি এসএসএল না ব্যবহার করার জন্য কনফিগার করা থাকে তবে এনজিনেক্স তাদের উপরের ত্রুটির ফলে ডিফল্টরূপে এইচটিটিপিএস ব্যবহার করার চেষ্টা করবে।

এই ত্রুটিটি সমাধানের জন্য, আপনার কনফিগারেশনে নীচের লাইনটি মন্তব্য করুন বা এটিকে সেট অফ করুন।

#ssl on 
OR
ssl off

সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন। তারপরে nginx পরিষেবাটি পুনরায় চালু করুন।

# systemctl restart nginx
OR
$ sudo systemctl restart nginx

এইভাবে, আপনি একাধিক সার্ভার ব্লকের জন্য এইচটিটিপি এবং এইচটিটিপিএস উভয় অনুরোধগুলি পরিচালনা করতে এনগিনেক্স সক্ষম করতে পারেন।

পরিশেষে, সাধারণ লিনাক্স বিতরণ এবং ফ্রিবিএসডি-তে এসএসএল এইচটিপিএস স্থাপন সম্পর্কে নিবন্ধগুলির তালিকা নীচে রয়েছে।

  1. আরএইচইএল/সেন্টোস-এ Nginx এর জন্য এনক্রিপ্ট এসএসএল শংসাপত্রের সাথে HTTPS সেট আপ করা হয়েছে
  2. উবুন্টু এবং ডেবিয়ান এ ফ্রি লেটস এনক্রিপ্ট এসএসএল শংসাপত্র সহ নিরাপদ এনগিনেক্স
  3. কীভাবে এসএসএলে এনগিনেক্স সুরক্ষিত করবেন এবং ফ্রিবিএসডি-তে এনক্রিপ্ট করুন

এখন এ পর্যন্তই. যদি আপনি এই ত্রুটিটি সমাধানের অন্য কোনও উপায় সম্পর্কে জানেন তবে দয়া করে নীচের প্রতিক্রিয়া ফর্মের মাধ্যমে আমাদের জানান।