এনগিনেক্স একটি আপস্ট্রিম_এইচটিপি_ ভেরিয়েবলের শিরোনাম যুক্ত করে


19

আমার কাছে এনজিনেক্সে একটি বিপরীত প্রক্সি রয়েছে যা বেশ কয়েকটি সাইটের প্রক্সি করে। আমি সম্প্রতি সমস্ত এসএসএল-সক্ষম ওয়েবসাইটগুলির জন্য এইচটিটিপি স্ট্রাইক পরিবহন সুরক্ষা সক্ষম করেছি। আমার এখন একটি সাইট আছে যা এটি সক্ষম করতে চায় না।

আমি ভেবেছিলাম যে আমার উজানে ইতিমধ্যে আমাকে Strict-Transport-Securityহেড-হেডার প্রেরণ করেছে , এবং যদি না হয়, তবে কেবল একটি যুক্ত করুন আমি কেবল একটি সাধারণ চেক করব । এইভাবে, আমার প্রবাহটি max-age=0প্রক্সি দ্বারা এইচএসটিএস সক্ষম হওয়া এড়াতে একটি এসটিএস শিরোলেখ প্রেরণ করতে পারে।

আমি ভেবেছিলাম যে আমি কেবল আমার কনফিগারেশনটি নিম্নরূপে পরিবর্তন করব:

location / {
        proxy_pass http://webservers;

        proxy_redirect off;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto "https";

        if ($upstream_http_strict_transport_security = "") {
                add_header Strict-Transport-Security "max-age=15552000";
        }
}

তবে, সম্ভবত কারণ যদি মন্দ হয় তবে এটি কাজ করে না। ভেরিয়েবলটি আসলে রয়েছে কিনা তা নিশ্চিত করার জন্য আমি বিভিন্ন কিছু গুছিয়ে চেষ্টা করেছি (যা আসলে) তবে কিছুই বলে মনে হচ্ছে না help

আমি কীভাবে এই কাজটি করতে পারি?

উত্তর:


22

এটি কাজ করে না কারণ অনুরোধটি ব্যাকএন্ডে যাওয়ার আগে যদি মূল্যায়ন করা হয়, সুতরাং $ upstream_http_ ভেরিয়েবলের কোনও মান নেই। একটি খালি মান সহ add_header উপেক্ষা করা হবে, তাই আপনি শর্তাধীন শিরোনাম শিরোনাম যোগ করতে একটি মানচিত্র ব্যবহার করতে পারেন :

map $upstream_http_strict_transport_security $sts {
  '' max-age=15552000;
}

server {
  location / {
    add_header Strict-Transport-Security $sts;
  }
}

1
ম্যাপের চালাক ব্যবহার!
অ্যালেক্সি টেন

ঠিক আছে আমি কিছু অন্যরকম করার চেষ্টা করছিলাম তবে আমি এনজিনেক্স বের করতে পারিনি। আপনি কি আমাকে বলতে পারেন আমি আনুষ্ঠানিকভাবে কোথায় এনগিনেক্স শিখতে পারি। এবং এছাড়াও আপনি এখানে আমাকে সহায়তা করতে পারেন: serverfault.com/questions/678521/…
মুহাম্মদ উমার

5

এটি কারণ ifপ্রক্সি হওয়ার আগেই মৃত্যুদন্ড কার্যকর করা হয় এবং এই মুহুর্তে কোনও পরিবর্তনশীল নেই $upstream_http_strict_transport_security

আপনি header_filter_by_luaলুয়া মডিউল থেকে নির্দেশিকা ব্যবহার করতে পারেন । যেমন

header_filter_by_lua 'if not ngx.header["X-Test"] then ngx.header["X-Test"] = "blah" end';

1
এইটা কাজ করে. ডেবিয়ান 7-এ আপনি ব্যাকপোর্টগুলি থেকে Nginx ব্যবহার করে LUA সমর্থন পেতে পারেন apt-get -t wheezy-backports install nginx-extras
পিটার এনেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.