Score:0

Nginx/พร็อกซีทำงานไม่ถูกต้อง

ธง de

ฉันเพิ่งถอนการติดตั้ง apache2 สำหรับ Nginx ฉันพยายามฟัง 88, 808 และ 888 สำหรับไซต์ของฉัน และเปลี่ยนเส้นทางโดเมนย่อยที่แตกต่างกันสำหรับแต่ละโดเมน (และอีกโดเมนหนึ่งไปยังเซิร์ฟเวอร์อื่น) ปัญหาคือ Nginx ให้เกตเวย์ที่ไม่ดีสำหรับคำขอพร็อกซีทั้งหมดและการหมดเวลาสำหรับการเข้าถึง IP โดยตรง

การกำหนดค่าพร็อกซี: --> otherdomain.fr = ข้อผิดพลาด 502 เกตเวย์ไม่ถูกต้อง

# HTTP
เซิร์ฟเวอร์ {
    # ฟังบน ipv4
    ฟัง 80;
    #ฟัง [::]:80;

    server_name ~.*.otherdomain.fr;

    ที่ตั้ง / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header โฮสต์ $host;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_pass "http://192.168.1.17";
    }
}

เซิร์ฟเวอร์{
    ฟัง 80;
    server_name nextcloud.domain.me;
    ที่ตั้ง / {
        proxy_set_header โฮสต์ $host;
        proxy_pass "http://127.0.0.1:888";
        ปิด proxy_redirect;
    }
}

เซิร์ฟเวอร์{
    ฟัง 80;
    server_name โดเมน.me;
    ที่ตั้ง / {
        proxy_set_header โฮสต์ $host;
        proxy_pass "http://127.0.0.1:808";
        ปิด proxy_redirect;
    }
}

เช่นสำหรับพอร์ต 88: --> ip:88 = หมดเวลา

(เห็นได้ชัดว่าเปิดใช้งานและผู้ใช้ nginx สามารถเข้าถึงไฟล์ได้)

เซิร์ฟเวอร์ {
    # ฟังบน ipv4
    ฟัง 88;
  
    ที่ตั้ง / {
        รูท /var/www/html/tests;
    }

}

เห็นได้ชัดว่าฉันกำลังทำอะไรผิด แต่ฉันไม่รู้ว่าเกิดอะไรขึ้น ถ้าคุณช่วยฉันได้ มันคงเหลือเชื่อมาก ขอบคุณล่วงหน้า!

แก้ไข :

netstat -tulpen | grep -E '8.?8'

tcp 0 0 127.0.0.1:10028 0.0.0.0:*
LISTEN 0 28186 1929/มาสเตอร์ tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 91603 8801/nginx: master tcp 0 0 127.0.0.1:12340
0.0.0.0:* LISTEN 0 25868 734/dovecot tcp 0 0 127.0.0.1:631 0.0.0.0:*
ฟัง 0 19881 497/cupsd tcp 0 0 0.0.0.0:88 0.0.0.0:* ฟัง 0 75033 8801/nginx: master tcp 0 0 0.0.0.0:888
0.0.0.0:* LISTEN 0 75032 8801/nginx: master tcp 0 0 0.0.0.0:443 0.0.0.0:*
ฟัง 0 75030 8801/nginx: master tcp 0
0 127.0.0.1:10025 0.0.0.0:* ฟัง 0
28182 1929/มาสเตอร์ udp6 0 0 :::32885
:::* 113 21172
482/avahi-daemon: r"""

digijay avatar
mx flag
อะไรคือเหตุผลในการแยกความแตกต่างของพอร์ตและพร็อกซีพอร์ตเหล่านั้น ผลลัพธ์ของ `netstat -tulpen | คืออะไร grep -E '8.?8?'`` ? คุณมีคำสั่ง `ฟัง` สำหรับพอร์ตเหล่านี้ทั้งหมดหรือไม่
louis habert avatar
de flag
1./ ฉันใช้พร็อกซีและแยกความแตกต่างของพอร์ตเพราะฉันใช้เซิร์ฟเวอร์ที่แตกต่างกันสำหรับแต่ละพอร์ต (808 เป็นเซิร์ฟเวอร์ cherrypy ที่ไม่ทำงานจริงๆ, otherdomain.fr เป็นเครื่องอื่น (apache2), 888 เป็น nextcloud ที่มีอินสแตนซ์ของ nginx นี้ (และ php8.0) และฉันใช้ 88 เพื่อการทดสอบเท่านั้น ดังนั้นฉันจึงไม่ใช้โดเมนย่อยสำหรับมัน) 2./ ดูแก้ไข 3./ ใช่ฉันทำ
louis habert avatar
de flag
แก้ไข: ฉันสามารถลบพอร์ตสำหรับ nextcloud และอาจเป็นพอร์ต 88
djdomi avatar
za flag
nginx ต้องการตำแหน่ง ชื่อเซิร์ฟเวอร์ หรือ ip ในชื่อเซิร์ฟเวอร์ มิฉะนั้นจะไม่ให้บริการเนื้อหาเนื่องจากไม่ทราบว่าจะทำอย่างไรกับเนื้อหานั้น ยิ่งไปกว่านั้น คุณใช้ `~.*.` ในชื่อเซิร์ฟเวอร์ด้วยเหตุผลใด
us flag
เนื้อหาของ nginx `error.log` คืออะไร?
louis habert avatar
de flag
@djdomi regex ถูกสร้างขึ้นเพื่อเปลี่ยนเส้นทางทุกโดเมนย่อยของ otherdomain.fr ไปยัง ip นี้
louis habert avatar
de flag
@เทโร คิลคาเนน สำหรับ 3 คำขอ: otherdomain.fr โดเมน.me:88 nextcloud.domain.me ฉันเข้าใจ : `2021/11/05 10:05:52 [ข้อผิดพลาด] 22452#22452: *1 การเชื่อมต่อ() ล้มเหลว (113: ไม่มีเส้นทางไปยังโฮสต์) ขณะเชื่อมต่อกับอัปสตรีม ไคลเอ็นต์: 172.70.90.59 เซิร์ฟเวอร์: ~.*.otherdomain .fr คำขอ: "GET / HTTP/1.1", อัปสตรีม $ 11/05/2021 10:05:55 [ข้อผิดพลาด] 22452#22452: *3 การเชื่อมต่อ() ล้มเหลว (113: ไม่มีเส้นทางไปยังโฮสต์) ขณะเชื่อมต่อกับอัปสตรีม ไคลเอ็นต์: 172.70.162.73 เซิร์ฟเวอร์: ~.*.otherdomain fr คำขอ: "GET /favicon.ico HTTP/1.$`
Score:1
ธง us

คุณไม่จำเป็นต้องใส่เครื่องหมายอัญประกาศรอบๆ URL ปลายทางของ proxy_pass.

ปัญหาหลักคือ server_name ~.*.otherdomain.fr และข้อเท็จจริงที่คุณใช้ proxy_set_header โฮสต์ $host.

ในกรณีนี้ ดูเหมือนว่านิพจน์ทั่วไปของคุณสำหรับ ชื่อเซิร์ฟเวอร์ ไม่ถูกต้องและใช้เป็นสตริง สตริงนั้นจะปรากฏขึ้นใน $โฮสต์ ตัวแปร.

คุณควรลอง

server_name *.otherdomain.fr;

แทน. หากไม่ได้ผลให้ใช้

proxy_set_header โฮสต์ $http_host;

ซึ่งส่งผ่านส่วนหัว HTTP Host เป็นต้นไปแทนที่จะเป็นเนื้อหาของ $โฮสต์ ตัวแปร.

djdomi avatar
za flag
ฉันคาดเดาได้อย่างถูกต้องว่า regrx ใช้งานได้ แต่ขัดแย้งกับส่วนที่เหลือ ;) thabks เฟอร์ชี้แจงความคิดของฉัน

โพสต์คำตอบ

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