Score:0

1 เกตเวย์ 2 เครื่อง 2 โดเมน 3 โดเมนย่อย วิธีการ

ธง ug

ฉันมีการกำหนดค่าที่ใช้งานได้ใน nginx สำหรับเว็บไซต์หนึ่งของฉัน แต่ฉันทำพังเมื่อฉันพยายามทำให้มันทำงานกับ 2 โดเมนที่แตกต่างกัน ซึ่งหนึ่งในนั้นมี 2 โดเมนย่อย ซึ่งทั้งหมดให้บริการไซต์หรือแอปพลิเคชันที่แตกต่างกัน เพื่อทำให้เรื่องยากขึ้นสำหรับฉัน โดเมนที่ใช้งาน 2 แอปอยู่ในเครื่องที่แยกจากกัน และฉันพยายามส่งคำขอพร็อกซีสำหรับโดเมนนั้นไปยังเครื่องที่ถูกต้องบน LAN ของฉัน ดูด้านล่าง:

สถาปัตยกรรมของฉัน

การกำหนดค่า NGINX ของฉันเป็นหายนะ แต่มีดังนี้:

เซิร์ฟเวอร์ {
    ฟัง 80 default_server;
    ฟัง [::]:80 default_server;

    รูท /home/pi/sites/main;

    # เพิ่ม index.php ในรายการหากคุณใช้ PHP
    ดัชนี index.html index.htm index.nginx-debian.html โดเมน1_index.html;

    ชื่อเซิร์ฟเวอร์ _;

    ที่ตั้ง / {
        # ความพยายามครั้งแรกในการให้บริการคำขอเป็นไฟล์ จากนั้น
        # เป็นไดเร็กทอรี จากนั้นถอยกลับไปแสดง 404
        try_files $uri $uri/ =404;
    }
}

เซิร์ฟเวอร์ {

    รูท /home/pi/sites/main;

    ดัชนี index.html index.htm index.nginx-debian.html;
    server_name internal.domain1.info; # จัดการโดย Certbot


    ที่ตั้ง / {
        # ความพยายามครั้งแรกในการให้บริการคำขอเป็นไฟล์ จากนั้น
        # เป็นไดเร็กทอรี จากนั้นถอยกลับไปแสดง 404
        try_files $uri $uri/ =404;
    }


    ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย Certbot
    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/internal.domain1.info/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/internal.domain1.info/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot



}
เซิร์ฟเวอร์ {
    ถ้า ($host = internal.domain1.info) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot


    ฟัง 80 ;
    ฟัง [::]:80 ;
    server_name internal.domain1.info;
    กลับ 404; # จัดการโดย Certbot


}

เซิร์ฟเวอร์ {
  server_name shiba.com www.shiba.com กระซิบ.shiba.com;
  ที่ตั้ง / {
    proxy_pass http://<machine2'sIP>:8888;
  }
}

เซิร์ฟเวอร์ {
  server_name yling.shiba.com;
  ที่ตั้ง / {
    proxy_pass http://<machine2'sIP>:8555;
  }
}

ฉันจะได้รับสิ่งนี้เพื่อให้บริการเว็บไซต์ตามที่ระบุในภาพของฉันได้อย่างไร? ขอบคุณ.

แก้ไข: การกำหนดค่าใหม่ที่ฉันเสนอ

|มีไซต์ | ซิมลิงก์ --> | เปิดใช้งานไซต์
   conf1 | | คอนเฟิร์ม1
#httpsเว็บไซต์
เซิร์ฟเวอร์ {
    รูท /home/pi/sites/main;

    ดัชนี index.html index.htm index.nginx-debian.html;
    
    ที่ตั้ง / {
        # ความพยายามครั้งแรกในการให้บริการคำขอเป็นไฟล์ จากนั้น
        # เป็นไดเร็กทอรี จากนั้นถอยกลับไปแสดง 404
        try_files $uri $uri/ =404;
    }

    ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย Certbot
    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/internal.domain1.info/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/internal.domain1.info/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
#http เปลี่ยนเส้นทางเว็บไซต์
เซิร์ฟเวอร์ {
    ถ้า ($host = internal.domain1.info) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot

    ฟัง 80 ;
    ฟัง [::]:80 ;
    server_name internal.domain1.info;
    กลับ 404; # จัดการโดย Certbot
}
|มีไซต์ | ซิมลิงก์ --> | เปิดใช้งานไซต์
   conf2 | | คอนเฟิร์ม2
เซิร์ฟเวอร์ {
    ฟัง 80 ;
    ฟัง [::]:80 ;
    server_name กระซิบ.shiba.info;

    กลับ 301 http://xxx.xxx.x.xx:8555;
}
|มีไซต์ | ซิมลิงก์ --> | เปิดใช้งานไซต์
   conf3 | | คอนเฟิร์ม3
เซิร์ฟเวอร์ {
    ฟัง 80 ;
    ฟัง [::]:80 ;
    server_name yling.shiba.info;

    กลับ 301 http://xxx.xxx.x.xx:8888;
}
drookie avatar
za flag
คุณกำลังใช้ catchall เริ่มต้น `เซิร์ฟเวอร์{}` พร้อมกับ `เซิร์ฟเวอร์ {}` ที่ไม่มี `listen` นั่นอาจเป็นสาเหตุที่ไม่มีอะไรทำงานได้อย่างถูกต้อง และใช่ สาเหตุส่วนหนึ่งคือการกำหนดค่าของคุณยุ่งเหยิง ดูเหมือนว่าคุณจะเกลียด UNIX และ nginx โดยเฉพาะ ทุกอย่างดูชั่วคราวและพังทลาย
WhisperingShiba avatar
ug flag
@drookie มันเป็นเดโม มันเป็นการกำหนดค่าแรกของฉันในโครงการแรกของฉัน ฉันต้องการแฮ็กการกำหนดค่าที่มีอยู่ แต่ฉันรู้ไม่ชัดเจนเพียงพอ คุณแนะนำให้ฉันทำการกำหนดค่าแยกต่างหากในไซต์ที่มีและเปิดใช้งาน symlink ไปยังไซต์ หรือฉันควรมีการกำหนดค่าเดียวที่มีเซิร์ฟเวอร์ 3 เครื่องสำหรับสถาปัตยกรรมทั้งหมดของฉัน หรือ 1 การกำหนดค่า 1 เซิร์ฟเวอร์และ 3 ตำแหน่ง ฉันมีช่วงเวลาที่ยากลำบากในการค้นหาวิธีการตั้งค่าระบบที่ต้องการเช่นนี้
Nikita Kipriyanov avatar
za flag
แต่ละเซิร์ฟเวอร์ (vitualhost) ควรใส่ไว้ในไฟล์ปรับแต่งของตัวเอง ห้ามให้บริการไซต์เป้าหมายด้วยเซิร์ฟเวอร์เริ่มต้น ควรใช้เป็นตัวยึดตำแหน่งสำหรับตรวจจับการกำหนดค่าที่ไม่ถูกต้องเท่านั้น ไม่สำคัญเท่าหากคุณใส่ไฟล์ลงในไซต์ที่มีให้ใช้งานแล้วเชื่อมโยงเข้าด้วยกัน แต่นี่เป็นวิธีที่ดีกว่าเพราะจะทำให้การลบการกำหนดค่าโดยไม่ตั้งใจเป็นไปได้น้อยลง
WhisperingShiba avatar
ug flag
@NikitaKipriyanov ฉันแก้ไขคำถามด้วยการกำหนดค่าที่เสนอ สัญชาตญาณของฉันคือสิ่งนี้ใช้ไม่ได้เพราะฉันกำลังฟังพอร์ต 80 3 ครั้งและด้วยเหตุนี้ nginx จะไม่เริ่มทำงานด้วยซ้ำ นอกจากนี้ ฉันไม่แน่ใจว่าการยืนยันชื่อเซิร์ฟเวอร์จะส่งคำขอ yelling.shiba.info ไปยัง xxx.xxx.x.xx:8555 โดยตรงหรือไม่ ฉันต้องทำ if ($host == yelling.shiba.info> { return 301 http://xxx.xxx.x.xx:PORT } ตามที่แสดงในตัวอย่างหรือไม่ ขอบคุณ

โพสต์คำตอบ

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