এনগিনেক্স HT2 দিয়ে কনফিগার করা HTTP / 2 সরবরাহ করে না


33

আমার এনগিনেক্স কনফিগারেশন নিয়ে আমার সমস্যা আছে। HTTP / 2 পরীক্ষা করতে আমি nginx 1.9.6 এ আপগ্রেড করেছি তবে এটি আমার সার্ভারে কাজ করে না।

আমি উবুন্টু 14.04.2 এলটিএস ব্যবহার করেছি

এটি nginx -V আউটপুট:

nginx version: nginx/1.9.6
built with OpenSSL 1.0.2d 9 Jul 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-http_v2_module --with-stream --with-ipv6 --with-mail --with-mail_ssl_module --with-openssl=/build/nginx-GFP362/nginx-1.9.6/debian/openssl-1.0.2d --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-auth-pam --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-echo --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-upstream-fair --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-dav-ext-module --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-cache-purge

এবং এটি আমার ভোস্ট কনফিগারেশন:

server {
    listen         80;
    server_name    localhost;
    return         301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2; ## listen for ipv4; this line is default and implied

    root /var/www/rendez-vous;
    index index.phtml index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;
    ssl_certificate /etc/nginx/certificates/myeventsportal/server.crt;
    ssl_certificate_key /etc/nginx/certificates/myeventsportal/server.key;

/...

যদি আমি ক্রোমের সর্বশেষতম সংস্করণটি সহ আমার সাইটে নেভিগেট করি তবে এটি কেবল http / 1.1 এর উপরে পরিবেশন করা হবে।


1
আপনি কি এনগিনেক্স
blog

আপনি কি আপনার ব্রাউজারের ক্যাশে মুছলেন? ছদ্মবেশী উইন্ডো থেকে চেষ্টা করুন।
JayMcTee

ছদ্মবেশী উইন্ডো কিছুই পরিবর্তন করে না। আমি ক্যাভ্যাট বিভাগটি পড়েছি এবং কেবলমাত্র অংশটি হ'ল ssl_prefer_server_ciphersতবে আমি হ্যান্ডশেক করার ত্রুটি
করিনি

ওয়েব সার্ভার থেকে পাঠানো শিরোনামের কারণে এটি ঘটেছে আপনার ওয়েব সার্ভারটি এইচটিটিপি / ২.০ পাঠানোর জন্য কনফিগার করা হয়েছে
মার্টিন বার্কার

উত্তর:


50

আমি ঠিক একই সমস্যার মধ্যে পড়েছি, তবে আমি মনে করি কেন এটি ঘটে তা আমি জানি। nginx 1.9.6 উবুন্টু 14.04 এ স্টক প্যাকেজ নয়, সুতরাং আপনি সম্ভবত এটি একটি এনগিনেক্স পিপিএ থেকে পেয়ে যাচ্ছেন । এটি দুর্দান্ত, তবে সেই প্যাকেজগুলি 14.04 থেকে স্টক লাইব্রেরিগুলি দিয়ে নির্মিত, যা ওপেনএসএসএল 1.0.1f বলতে হবে। দুর্ভাগ্যবশত দ্বারা OpenSSL সংস্করণ ধারণ করে না যে RFC7301 ALPN সমর্থন করা হয়েছে যাতে সঠিক HTTP- র / 2 আপস জন্য প্রয়োজন হয়; এটি কেবলমাত্র এখন অবহিত এনপিএন সমর্থন করে। দেখে মনে হচ্ছে ক্রোম ইতিমধ্যে NPN এর জন্য সমর্থন সরিয়ে নিয়েছে, সুতরাং এটি ALPN ব্যতীত HTTP / 2 সংযোগের বিষয়ে আলোচনা করতে অক্ষম। অন্যদিকে ফায়ারফক্স ৪১-তে এখনও এনপিএন সমর্থন রয়েছে এবং এটি দিয়ে আপনি HTTP / 2 ব্যবহার করতে সক্ষম হবেন।

আপনি আপনার সার্ভারটি এটির মতো পরীক্ষা করতে পারেন - আপনার ক্লায়েন্টে আপনার ওপেনএসএসএল 1.0.2 ডি ইনস্টল করা দরকার ( openssl versionচেক করার জন্য রান করুন):

ALPN এর সাথে পরীক্ষা করুন:

echo | openssl s_client -alpn h2 -connect yourserver.example.com:443 | grep ALPN

যদি ALPN কাজ করে, আপনার দেখতে হবে:

ALPN protocol: h2

অন্যথায় আপনি পাবেন:

No ALPN negotiated

এনপিএন দিয়ে পরীক্ষা:

echo | openssl s_client -nextprotoneg h2 -connect yourserver.example.com:443

যদি এটি কাজ করে তবে আপনি পাবেন:

Next protocol: (1) h2
No ALPN negotiated

তার মানে এটি এনপিএন এর মাধ্যমে কোনও এইচটিটিপি / ২ সংযোগের সাথে সফলভাবে আলোচনা করছে যা ফায়ারফক্স যা করে।

তাহলে কীভাবে এটি সমাধান করবেন? একমাত্র উপায় দেখতে পাচ্ছি একটি পিপিএ (আমি ব্যবহার থেকে OpenSSL এর পরবর্তী বিল্ড ইনস্টল করা এই এক পিএইচপি, যা OpenSSL রয়েছে জন্য) এবং আপনার নিজের nginx সঙ্গে লিঙ্ক নির্মাণ। আপনি চালিয়ে আপনার বিদ্যমান এনগিনেক্স বিল্ডের জন্য কনফিগার প্যারামগুলি সন্ধান করতে পারেন এবং এটি nginx -Vআপনার নিজের সংস্করণ তৈরি করতে সক্ষম হতে হবে।

আপডেট : আমি আবিষ্কার করেছি যে ক্রোম এনপিএন দিয়ে এইচটিটিপি / 2 সমর্থন করে না তার কারণ এটি এনপিএন সমর্থন করে না (যদিও এটি কোনও সময়ে ফেলে দেওয়া হবে), তবে এটি বিশেষত এইচ 2 সমর্থন করে না এনপিএন, যেমন ক্রোমে দেখানো হয়েছে: // নেট-ইন্টারনালস / # HT2 পৃষ্ঠা:

ক্রোম HTTP / 2 তথ্য 2


আমি কেবল লক্ষ্য করেছি যে আপনি ইতিমধ্যে ওপেনসেল ১.০.২ ডি চালাচ্ছেন - তবে পরীক্ষাগুলি এখনও কার্যকর প্রমাণিত হতে পারে।
সিঙ্ক্রো

আমার এনগিনেক্স প্যাকেজটি সর্বশেষ ওপেনএসএল সংস্করণ দিয়ে সংকলিত হয়েছে তবে উবুন্টু 14.04 এর একটি পুরানো সংস্করণ রয়েছে। যদি আমার মনে থাকে তবে এটি 1.0.1f
throrin19

হ্যাঁ, আমি যা বলেছিলাম।
সিঙ্ক্রো

প্রথম কমান্ডের জন্য, আমি একটি ত্রুটি পেয়েছি unknown option -alpnএবং দ্বিতীয় কমান্ড ভাল কাজ করেছে
throrin19

2
২০১ of এর প্রান্তে এখন এর অবস্থা কী? আমি এখনও দেখতে পাচ্ছি যে এনজিএনএক্স এইচটিটিপি 2 হিসাবে ফাইল পরিবেশন করছে না
vsync

3

সংক্ষিপ্ত সংস্করণ.

আমি দেখতে পেয়েছি যে ব্রাউজিং কম্পিউটারে এসএসএল / টিএলএস ফিল্টারিং চালু থাকলে ইএসইটি অ্যান্টিভাইরাস HTTP / 2 কে কাজ করা থেকে বিরত রাখতে পারে। আপনার অ্যান্টিভাইরাস এসএসএল / টিএলএস ফিল্টার করছে না তা পরীক্ষা করে দেখুন।


টিএলডিআর সংস্করণ

আমি পোস্টারের মতো একই সমস্যায় পড়েছিলাম, তবে একটি আকর্ষণীয় মোড় নিয়ে। আমি আমার সার্ভারের কনফিগারেশনটিকে এনজিন্স 1.12.1 এ আপগ্রেড করেছি। ওপেনএসএসএল ১.০.২.২ সহ সংকলিত এবং প্রাথমিক পরিদর্শনকালে এটি HTTP / 2 কাজ না করার সমস্যাটি "সমাধান" করেছে। আমার ব্রাউজারে, আমি দেখতে পেলাম যে চলুন এনক্রিপ্ট দ্বারা সার্ভার শংসাপত্রটি যাচাই করা হয়েছিল। এইচটিটিপি / ২ দিয়ে সামগ্রীও সরবরাহ করা হচ্ছিল।

কিছু সময় পরে, আমি দেখতে পেলাম যে খুব একই পৃষ্ঠা এবং একই সংস্থানগুলি আর এইচটিটিপি / 2 এর মাধ্যমে দেওয়া হচ্ছে না। কাকতালীয়ভাবে, সাইটটি আর চলুন এনক্রিপ্ট দ্বারা যাচাই করা হয়নি, তবে এ্যাসেট দ্বারা? !! ?! আমার বিস্ময়ের জন্য, নতুন HT2 সমস্যাটির সাথে আমার সার্ভার কনফিগারেশনটি মোটেই কিছুই করার ছিল না। দেখা গেল যে আমার স্থানীয় কম্পিউটারে আমার অ্যান্টিভাইরাসটিতে আমার কাছে এসএসএল / টিএলএস ফিল্টারিং ছিল এবং এটি সমস্যার কারণ হয়ে দাঁড়িয়েছে। সমাধানটি ছিল অ্যান্টিভাইরাসটিতে এসএসএল / টিএলএস ফিল্টারিং বন্ধ করা। একবার আমি এটি বন্ধ করে দিয়েছিলাম (এবং কম্পিউটারটি পুনরায় বুট করে) HTTP / 2 আবার কাজ করে এবং শংসাপত্রটি আবার আসুন এনক্রিপ্ট দ্বারা যাচাই করা হয়েছিল।

কীভাবে এসইএসটিতে এসএসএল / টিএলএস বন্ধ করতে হয় তার নির্দেশাবলীর জন্য, http://support.eset.com/kb3126/?locale=en_US দেখুন


এটি আমার ক্ষেত্রে বিষয়টি ছিল। এটি একটি ব্রাউজারে (যা ফায়ারওয়াল দ্বারা ফিল্টার করা হয়নি) তবে অন্য কোনও ক্ষেত্রে কাজ করছিল না বলে আমাকে উন্মাদনা থেকে বাঁচিয়েছেন
দেব

আপনি একটি সুপার প্রতিভা। এটি ইএসইটি ছিল এবং আমি সমস্যাটি খুঁজতে আমার 4 দিন অতিবাহিত করেছি। লিনাক্সের এই পৃথিবীতে আমি কেবল সম্ভব চেষ্টা করেছি। আমি বিশ্বাস করতে পারি না এটি ইএসইটি ছিল এবং আমি আমার ভিপিএস হাতুড়ি করছিলাম।
আব্দুল জব্বার ওয়েবস্টো


1

যেমন সিঙ্ক্রো তার উত্তরে বলেছে, বিষয়টি বেশিরভাগ এনজিএনএক্স প্যাকেজগুলি ওপেনএসএসএল ১.০.২ দিয়ে তৈরি করা হয়নি built ALPN সংকলনের জন্য কেবলমাত্র সম্পর্কিত ওপেনএসএসএল বিকাশের উত্সে উপস্থিত প্রতীকগুলির প্রয়োজন requires

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

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