كيف يمكنك تغيير رأس الخادم الذي تم إرجاعه بواسطة nginx؟

StackOverflow https://stackoverflow.com/questions/246227

  •  05-07-2019
  •  | 
  •  

سؤال

هناك خيار لإخفاء الإصدار بحيث يعرض nginx فقط، ولكن هل هناك طريقة لإخفاء ذلك أيضًا حتى لا يظهر أي شيء أو يغير الرأس؟

هل كانت مفيدة؟

المحلول

مثل Apache، يعد هذا تعديلًا سريعًا للمصدر وإعادة الترجمة.من كالوميل.org:

الخادم:السلسلة هي الرأس الذي يتم إرساله إلى العميل لإخبارهم بنوع خادم HTTP الذي تقوم بتشغيله وربما ما هو الإصدار.يتم استخدام هذه السلسلة من قبل أماكن مثل Alexia و NetCraft لجمع الإحصاءات حول عدد وخادم الويب الذي يتم بثه على الإنترنت.لدعم المؤلف والإحصائيات لـ NGINX ، نوصي بالحفاظ على هذه السلسلة كما هي.ولكن ، من أجل الأمان ، قد لا ترغب في أن يعرف الناس ما الذي تقوم بتشغيله ويمكنك تغيير هذا في الكود المصدري.تحرير الملف المصدر src/http/ngx_http_header_filter_module.cأنظر السطرين 48 و 49.يمكنك تغيير السلسلة إلى أي شيء تريده.

## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;

تعديل مارس 2011: الدعائم لـ Flavius ​​أدناه للإشارة إلى خيار جديد، ليحل محل معيار Nginx HttpHeadersModule مع متشعب HttpHeadersMoreModule.لا تزال إعادة ترجمة الوحدة القياسية هي الحل السريع، ويكون ذلك منطقيًا إذا كنت تريد استخدام الوحدة القياسية ولن تقوم بتغيير سلسلة الخادم كثيرًا.ولكن إذا كنت تريد أكثر من ذلك، فإن HttpHeadersMoreModule هو مشروع قوي ويتيح لك القيام بجميع أنواع السحر الأسود في وقت التشغيل باستخدام رؤوس HTTP الخاصة بك.

نصائح أخرى

إذا كنت تستخدم إنجن إكس إلى وكيل تطبيق الخلفية وترغب في الجهة الخلفية للإعلان عن رأسها Server: بك دون إنجن إكس الكتابة فوقه، ثم يمكنك الذهاب داخل مقطع server {…} وتعيين:

proxy_pass_header Server;

وهذا سيقنع إنجن إكس لترك هذا الرأس وحده، وليس إعادة كتابة القيمة التي وضعتها الجهة الخلفية.

وكان آخر تحديث منذ بعض الوقت، حتى هنا هو ما عملت بالنسبة لي على أوبونتو:

sudo apt-get update
sudo apt-get install nginx-extras

وثم إضافة السطرين التاليين إلى قسم http من nginx.conf، والذي يقع عادة في /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';

وأيضا، لا ننسى لإعادة تشغيل إنجن إكس مع sudo service nginx restart.

وبسيط، تحرير /etc/nginx/nginx.conf وإزالة تعليق من

#server_tokens off;

وابحث عن HTTP القسم.

والأمر في غاية البساطة: إضافة هذه الأسطر إلى القسم الخادم:

server_tokens off;
more_set_headers 'Server: My Very Own Server';

وهناك وحدة خاصة: http://wiki.nginx.org/NginxHttpHeadersMoreModule

<اقتباس فقرة>   

وهذه الوحدة تسمح لك لإضافة، تعيين، أو مسح أي إخراج أو إدخال رأس الذي تحدده.

     

وهذا هو نسخة محسنة من مستوى رؤوس وحدة لأنه يوفر المزيد من المرافق مثل إعادة أو مسح "رؤوس مدمج" مثل Content-Type، Content-Length، وServer.

     

وكما يسمح لك لتحديد الوضع HTTP اختياري معايير التعليمات البرمجية باستخدام الخيار -s واختياري معايير نوع المحتوى باستخدام الخيار -t حين تعديل رؤوس الإخراج مع في more_set_headers و <لأ href =" https://web.archive.org/web/20100209015711 /http://wiki.nginx.org/NginxHttpHeadersMoreModule#more_clear_headers "يختلط =" نوفولو noreferrer "> more_clear_headers توجيهات ...

قم بتثبيت إضافات Nginx

sudo apt-get update
sudo apt-get install nginx-extras

يمكن إزالة تفاصيل الخادم من الاستجابة عن طريق إضافة السطرين التاليين في nginx.conf (ضمن قسم http)

more_clear_headers Server;
server_tokens off;

إذا كنت بخير مع مجرد تغيير رأس إلى سلسلة أخرى خمس رسائل أو أقل، يمكنك ببساطة تصحيح ثنائي.

sed -i 's/nginx\r/thing\r/' `which nginx`

والذي، كحل، لديها بعض المزايا البارزة. وهي التي يمكن أن تسمح الإصدارات إنجن إكس ليتم التعامل معها من قبل مدير مجموعة (لذلك، لا تجميع من المصدر) حتى لو إنجن إكس-اشياء غير متوفرة لتوزيعة الخاص بك، وكنت لا داعي للقلق بشأن أي من إضافية مدونة لشيء من هذا القبيل إنجن إكس-اشياء يجري الضعيفة.

وبطبيعة الحال، سوف تحتاج أيضا إلى تعيين server_tokens off الخيار، لإخفاء رقم الإصدار، أو تصحيح هذه السلسلة شكل أيضا.

وأقول "خمس رسائل أو أقل" لأنه بطبيعة الحال يمكنك استبدال دائما:

<اقتباس فقرة>   

وإنجن إكس \ ص \ 0

مع

<اقتباس فقرة>   

وبوب \ ص \ 0 \ ص \ 0

وترك بايت الماضيين دون تغيير.

إذا كنت فعلا تريد أكثر من خمسة أحرف، فأنت تريد أن تترك server_tokens على، واستبدال تنسيق سلسلة (أطول قليلا)، على الرغم من جديد هناك حدا أعلى على أن طول فرضته طول السلسلة الشكل - 1 (لإرجاع).

... إذا كان أي من ما سبق يجعل الشعور لك، أو كنت لم مصححة ثنائي من قبل، قد ترغب في البقاء بعيدا عن هذا النهج، وإن كان.

والطريقة الوحيدة هي لتعديل الملف SRC / HTTP / ngx_http_header_filter_module.c. لقد غيرت إنجن إكس على خط 48 إلى سلسلة مختلفة.

وما يمكنك القيام به في ملف إنجن إكس التكوين هو وضع <م> server_tokens إلى الخروج. هذا سيمنع إنجن إكس من طباعة رقم الإصدار.

لتحقق الأمور، حاول <م> حليقة -I http://vurbu.com/ | البقرى خادم

ويجب أن إرجاع

Server: Hai

وبعد أن قرأت الجواب أطلق عليه الرصاص البارثيين، وأنا حفر في ملف ثنائي /usr/sbin/nginx. ثم تبين لي أن الملف يحتوي على هذه الخطوط الثلاثة.

Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx

وأساسا الأولين منهم وتهدف لتوجيه server_tokens on; (شملت Server الإصدار). ثم أقوم بتغيير معايير البحث بحيث تتطابق مع تلك الخطوط في ملف ثنائي.

sed -i 's/Server: nginx/Server: thing/' `which nginx`

وبعد أن حفر أبعد اكتشفت أن رسالة الخطأ التي تنتجها إنجن إكس يتم تضمين أيضا في هذا الملف.

<hr><center>nginx</center>

وهناك ثلاثة منهم، واحد دون النسخة، وشملت اثنين منهم النسخة. لذلك أنا بتشغيل الأمر التالي ليحل محل سلسلة إنجن إكس في رسالة الخطأ.

sed -i 's/center>nginx/center>thing/' `which nginx`

ووفقا لإنجن إكس الوثائق أنها تدعم القيم المخصصة أو حتى استبعاد:

Syntax: server_tokens on | off | build | string;

ولكن للأسف فقط مع الاشتراك التجاري :

<اقتباس فقرة>   

وبالإضافة إلى ذلك، وكجزء من اشتراك تجاري لنا ابتداء من   النسخة 1.9.13 التوقيع على صفحات الخطأ والاستجابة "خادم"   يمكن تعيين قيمة حقل رأس صراحة باستخدام سلسلة مع   المتغيرات. سلسلة فارغة تعطيل الانبعاثات من "خادم"   المجال.

وأنا أعلم أن آخر قديمة نوعا ما، لكنني وجدت الحل السهل الذي يعمل على توزيع مقرها ديبيان دون تجميع إنجن إكس من المصدر.

أولا تثبيت حزمة إنجن إكس-اشياء

<اقتباس فقرة>   

سودو الرابطة تثبيت إنجن إكس-اشياء

وبعد ذلك تحميل إنجن إكس رؤوس HTTP أكثر حدة عن طريق تحرير nginx.conf وإضافة السطر التالي داخل كتلة الخادم

<اقتباس فقرة>   

وحدات load_module / ngx_http_headers_more_filter_module.so؛

وعندما يتم ذلك سيكون لديك الوصول إلى كل more_set_headers وmore_clear_headers التوجيهات.

هل يسأل عن قيمة رأس Server في الرد؟ يمكنك محاولة تغيير ذلك مع توجيه add_header، ولكن لست متأكدا إذا كان سوف يعمل. http://wiki.codemongers.com/NginxHttpHeadersModule

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top