প্রশ্ন HTTP হিসাবে একই কনফিগারেশন সঙ্গে পরিবেশন nginx HTTPS


দুটি nginx জুড়ে কনফিগারেশন নির্দেশাবলী ভাগ করার একটি উপায় আছে server {} ব্লক? আমি নিয়মগুলিকে অনুলিপি এড়াতে চাই, কারণ আমার সাইটের HTTPS এবং HTTP সামগ্রী সঠিক একই কনফিগারেশনের সাথে পরিবেশিত হয়।

বর্তমানে, এটি এরকম:

server {
  listen 80;
  ...
}

server {
  listen 443;

  ssl on; # etc.
  ...
}

আমি লাইন বরাবর কিছু করতে পারি:

server {
  listen 80, 443;
  ...

  if(port == 443) {
    ssl on; #etc
  }
}

174
2018-05-21 16:18


উত্স




উত্তর:


আপনি এটির মতো একটি সার্ভার ব্লকটিকে একত্রিত করতে পারেন:

server {
    listen 80;
    listen 443 default_server ssl;

    # other directives
}

অফিসিয়াল কিভাবে-টু


238
2018-05-21 18:54



আহ, আমি জানতাম না পোর্ট 80 এর উপর লোড হলে SSL নির্দেশাবলীর অবহেলা করা এনজিক্সএক্স যথেষ্ট বুদ্ধিমান ছিল। Awesome! - ceejayoz
nginx উইন এর সব ধরণের হয়। - Jauder Ho
এবং যদি আপনার কাছে এক সার্ভারে কয়েকটি সাইট থাকে তবে এটি উল্লেখযোগ্য যে "ডিফল্ট" বাধ্যতামূলক নয় - luchaninov
তাই মার্জিত এটা ব্যাথা ... - Alix Axel
এখানে কাজ করা হচ্ছে না ... "সাধারণ HTTP অনুরোধটি HTTPS পোর্টে পাঠানো হয়েছে" - gcstr


গৃহীত উত্তর সাফ করার জন্য আপনাকে বাদ দিতে হবে

SSL on;

এবং আপনি শুধু 0.8.21 পরে nginx সংস্করণ জন্য নিম্নলিখিত প্রয়োজন

listen 443 ssl;

রেফারেন্স:

Nginx ডক্স - একটি একক HTTP / HTTPS সার্ভার কনফিগার করা


81
2018-06-13 06:19



ধন্যবাদ! আমি কেন এইচটিএমএল কিছুই কাজ ছিল তা বুঝতে পারে না। এসএসএল মুছে ফেলা হচ্ছে; কাজ করছে. - Chris Cummings


আমি আপনার মত একটি উপায় জানি না, কিন্তু অবশ্যই একটি সহজ এবং রক্ষণাবেক্ষণযোগ্য উপায় আছে।

সাধারণ সার্ভার সেটিংস একটি পৃথক ফাইলের মধ্যে সরান, যেমন "serverFoo.conf" এবং তারপরে include এটা আলাদা server {} তাই ব্লক:

server {
    listen 80;
    include serverFoo.conf;
}
server {
    listen 443 ssl;
    include serverFoo.conf;
}

26
2018-05-21 18:38



+1 = আমার জন্য কাজ করে। (অন্য পদ্ধতির সাথে কাজ করতে পারিনি।) - lackey
লোড ব্যালান্সার হিসাবে অভিনয় করলেও, অন্য উদাহরণটি 'proxy_pass' এর জন্য অ্যাকাউন্ট নয়। - Mike Purcell
আপনার বিকল্প যদি এই মহান server_name প্রতিটি পোর্ট জন্য ভিন্ন - iDev247
ব্যবহার, এসএসএল ব্যবহার করবেন না listen 443 ssl; এখন থেকে এক। - danger89
এটি সাম্প্রতিক nginx 1.10.1 এর সাথে কাজ করছে এমন একমাত্র সমাধান বলে মনে হয়। কিছু কারণে দুই listen লাইন সঠিকভাবে ব্যাখ্যা করা হয় না, কিন্তু পৃথক তাদের সরানোর server{} এটা সংশোধন করে। - Artur Bodera


ইতিমধ্যে সহায়ক উত্তরগুলিতে প্রসারিত, এখানে আরও সম্পূর্ণ উদাহরণ:

server {

    # Listen on port 80 and 443
    # on both IPv4 and IPv6
    listen 80;
    listen [::]:80 ipv6only=on;
    listen 443 ssl;
    listen [::]:443 ipv6only=on ssl;

    # Set website folder
    root /path/to/your/website;

    # Enable SSL
    ssl_certificate your-cert.pem;
    ssl_certificate_key your-cert.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
}

7
2018-05-10 17:48



আমি জানি এটি একটি পুরানো পুরানো উত্তর, কিন্তু এটি সম্পূর্ণরূপে সম্পূর্ণরূপে আমি অন্যদের জন্য এটি নির্দেশ করতে চেয়েছিলাম যারা এটি ব্যবহার করতে পারে যে আপনি SSLv3 প্রোটোকলকে পডেল দুর্বলতার পক্ষে দুর্বল হিসাবে অক্ষম করতে হবে: disablessl3.com  পরিবর্তে ব্যবহার করুন: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - user147787


ইগোর / জাউডারের পোস্টে যোগ করার জন্য, যদি আপনি একটি নির্দিষ্ট আইপি শোনেন তবে আপনি এটি ব্যবহার করতে পারেন:

listen xxx.xxx.xxx.xxx;
listen xxx.xxx.xxx.xxx:443 default ssl;

4
2018-02-25 13:11