การเปลี่ยนเส้นทางจาก nginx หนึ่งไปยังอีก


10

ฉันมีเซิร์ฟเวอร์สองตัว (A และ B) กับ NGINX เซิร์ฟเวอร์ A กำลังให้บริการไซต์เก่าและเซิร์ฟเวอร์ B กำลังให้บริการไซต์ใหม่ ฉันอัปเดต DNS ของฉันแล้ว แต่ค่อนข้างช้า: ในสำนักงานของฉันฉันยังคงเห็นไซต์เก่าของฉัน:

subdomain.site.com

ฉันจะเปลี่ยนเส้นทางคำขอทั้งหมดจากเซิร์ฟเวอร์ A สำหรับโดเมนย่อยนี้ไปยังเซิร์ฟเวอร์ B ได้อย่างไร

ตอนนี้พวกเขาทั้งสองได้รับการจัดการกับสิ่งนี้ใน NGINX:

server {
  listen 80;
  server_name subdomain.site.ru;
  root /var/www/subdomain/public;
  passenger_enabled on;
}

คำตอบ:


14

เนื่องจากทั้งคู่ใช้ชื่อเซิร์ฟเวอร์เดียวกันคุณจึงไม่สามารถเปลี่ยนเส้นทางอย่างง่ายได้

คุณสามารถทำบางอย่างของพร็อกซีแม้ว่าตามบรรทัดต่อไปนี้บนเซิร์ฟเวอร์เก่า:

upstream newserver {
  server 172.16.0.1:80;  # this is new server, by IP address
}

server {
  listen 80;
  server_name subdomain.site.ru;
  location / {
    proxy_set_header Host $host;
    proxy_pass http://newserver;
  }
}

ดังนั้นโดยทั่วไปให้กำหนดค่าเซิร์ฟเวอร์เก่าเพื่อให้ผ่านการร้องขอทั้งหมดไปยังเซิร์ฟเวอร์ใหม่ แน่นอนใส่การกำหนดค่าใด ๆ ที่คุณต้องการสำหรับ client_max_body_size และทุกอย่าง


วิธีนี้สามารถทำได้โดยใช้ SSL? เครื่องพร็อกซีต้องใช้ใบรับรอง ssl รวมถึงเซิร์ฟเวอร์ upstream หรือไม่
earthmeLon

@earthmeLon ในคำถามเดิมพร็อกซีนี้เป็นมาตรการชั่วคราวสำหรับการอัปเดต DNS ในกรณีนั้นทั้งเซิร์ฟเวอร์ใหม่และเซิร์ฟเวอร์เก่าจะมีใบรับรอง SSL ในกรณีของ upstream คุณสามารถเชื่อมต่อผ่าน SSL หรือผ่าน HTTP ธรรมดา เมื่อคุณควบคุมทั้งสองกล่องมันจะขึ้นอยู่กับความชอบของคุณ
cjc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.