Score:0

ฉันจะรันเว็บเซิร์ฟเวอร์ Nginx สองตัวบนเครื่องเดียวกันได้อย่างไร

ธง br

ฉันต้องการโฮสต์เว็บไซต์และเรียกใช้โครงการ microservices บนเซิร์ฟเวอร์ของฉันเอง

  1. เว็บไซต์จะทำงานด้วยเว็บเซิร์ฟเวอร์ Nginx โดเมนของเว็บไซต์จะมีลักษณะเหมือนกับ sampleapp.com และเว็บไซต์นี้จะใช้ freessl

  2. หนึ่งในบริการของโครงการ Microservice จะทำงานด้วยเว็บเซิร์ฟเวอร์ Nginx เป็นบริการในคอนเทนเนอร์นักเทียบท่า บริการนี้ใช้โดเมนย่อยของ sampleapp.com ของฉัน เช่น api-dev.sampleapp.com และโดเมนย่อยเหล่านั้นควรทำงานกับ SSL ด้วย

เมื่อพยายามปรับใช้บริการด้วย docker-compose ฉันได้รับข้อผิดพลาดต่อไปนี้:

[คำเตือน] 1#1: ชื่อเซิร์ฟเวอร์ที่ขัดแย้งกัน "api-dev.sample.com" บน 0.0.0.0:80 ละเว้น

ข้อกังวลหลักคือฉันจะตั้งค่า ssl ภายใน docker ได้อย่างไร 443 เป็นพอร์ตเริ่มต้นสำหรับ HTTPS

ไฟล์กำหนดค่า Nginx ของ microservice ของฉันมีดังต่อไปนี้

worker_processes อัตโนมัติ

เหตุการณ์ {
  worker_connections 1024;
}

http {

  เซิร์ฟเวอร์ {
    ฟัง 80 default_server;
    ชื่อเซิร์ฟเวอร์ "";
    กลับ 444;
  }

  เซิร์ฟเวอร์ {
    server_name game-dev.sampleapp.com;

    ที่ตั้ง / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
      proxy_set_header โฮสต์ $http_host;
      proxy_set_header X-NginX-Proxy จริง;
      proxy_http_version 1.1;
      proxy_set_header อัพเกรด $http_upgrade;
      proxy_set_header การเชื่อมต่อ "อัปเกรด";

      proxy_pass http://game_nodes;
      ปิด proxy_redirect;
    }
  }
  เซิร์ฟเวอร์ {
    ถ้า ($host = game-dev.sampleapp.com) {
      ส่งคืน 301 https://$host$request_uri;
    }


    ฟัง 80;
    ฟัง [::]:80;
    server_name game-dev.sampleapp.com;
    กลับ 404;
  }

  ต้นน้ำ game_nodes {
# เปิดใช้งานเซสชันปักหมุด
 #ip_hash;
    เซิร์ฟเวอร์เกมอัลฟ่า:3000;
    Keepalive 8;
  }

  เซิร์ฟเวอร์ {
    server_name api-dev.sampleapp.com;

    ที่ตั้ง / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
      proxy_set_header โฮสต์ $http_host;
      proxy_set_header X-NginX-Proxy จริง;

      proxy_pass http://main_nodes;
      ปิด proxy_redirect;

    }
  }

  เซิร์ฟเวอร์ {
   # ถ้า ($host = api-dev.sampleapp.com) {
    # ส่งคืน 301 https://$host$request_uri;
    #}

    ฟัง 80;
    ฟัง [::]:80;
    server_name api-dev.sampleapp.com;
    กลับ 404;
  }

  ต้นน้ำ main_nodes {
    เซิร์ฟเวอร์หลัก-alpha:8000;
    เซิร์ฟเวอร์หลักเบต้า: 8000;
    Keepalive 8;
  }
}

ไฟล์การกำหนดค่า Nginx ของเว็บไซต์มีดังนี้

เซิร์ฟเวอร์ {
    ฟัง 8080;
    ฟัง [::]:8080;
    ฟัง 8443 ssl http2;
    ฟัง [::]:8443 ssl http2;

    server_name sampleapp.com www.sampleapp.com;
    รูท /var/www/sampleapp.com;
    ดัชนี index.html;

    ssl_certificate /etc/ssl/certs/sampleapp.com.pem;
    ssl_certificate_key /etc/ssl/private/sampleapp.com.key;
    ssl_client_certificate /etc/ssl/certs/origin-pull-ca.pem;
    เปิด ssl_verify_client;

    client_max_body_size 100M;
  
    ปิดดัชนีอัตโนมัติ

    ที่ตั้ง / {
        try_files $uri $uri/ =404;

    }

}

ฉันเป็นนักพัฒนา ไม่ใช่ผู้ดูแลระบบ ดังนั้นฉันจึงมีช่วงเวลาที่ยากลำบากในการหาวิธีที่ดีที่สุดในการดำเนินการนี้

djdomi avatar
za flag
ในกรณีทั่วไป nginx มีไดเร็กทอรีที่มีไซต์และเปิดใช้งานไซต์สำหรับเพิ่ม vhosts ให้กับบริการ
Score:1
ธง es

หนึ่งในวิธีแก้ปัญหาที่เป็นไปได้คือการรัน 3 docker container ด้วย Nginx

  1. ฟังพอร์ต 80 และ 443 ถ่ายข้อมูล ssl และทำงานเป็นพร็อกซีย้อนกลับสำหรับคอนเทนเนอร์อีกสองรายการ
  2. หมุนเว็บไซต์
  3. หมุนไมโครเซอร์วิส

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา