วิธีแก้ไขปัญหา ONLYOFFICE Document Server 502 Bad Gateway ที่แสดงผลอยู่ด้านหลัง Nginx

เมื่อเปิด URL ของ ONLYOFFICE Docs ในเบราว์เซอร์ จะแสดงข้อความ “502 Bad Gateway” หรือตัวเชื่อมต่อ Nextcloud/ownCloud ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์เอกสารได้ ในทั้งสองกรณี โดยปกติแล้ว Nginx จะได้รับคำขอแต่ไม่สามารถรับการตอบกลับที่ถูกต้องจากต้นทางได้ ต้นทางอาจเป็นบริการเอกสารภายในของ ONLYOFFICE, คอนเทนเนอร์ Docker หรือพร็อกซีแบบย้อนกลับอื่นๆ ขั้นแรกให้ระบุว่า Nginx ตัวใดส่งคืนข้อผิดพลาด 502 จากนั้นทดสอบปลายทางโดยตรงก่อนที่จะเปลี่ยนแปลงการกำหนดค่า

คู่มือการแก้ไขปัญหา Linux ฉบับปัจจุบันของ ONLYOFFICE แนะนำให้ตรวจสอบ บริการ ds-docserviceต่างๆds-converterและบันทึกของ Document Server นอกจากนี้ คู่มือเกี่ยวกับ reverse-proxy ยังกล่าวถึงส่วนหัวของโฮสต์และโปรโตคอลที่ส่งต่อด้วย ลำดับขั้นตอนด้านล่างจะตรวจสอบสถานะของบริการก่อน จากนั้นจึงตรวจสอบการกำหนดเส้นทางของ Nginx และเครือข่ายของ Docker

1. ตรวจสอบว่า Nginx ตัวใดที่ส่งคืนข้อผิดพลาด 502

การติดตั้งแพ็กเกจ ONLYOFFICE นั้นรวมถึงการกำหนดค่า Nginx ของตัวเอง และการใช้งานอาจมี Nginx reverse proxy ภายนอกด้วย Docker อาจเพิ่มการเชื่อมต่อเครือข่ายอีกชั้นหนึ่ง การปรากฏของหน้า 502 เพียงอย่างเดียวอาจไม่สามารถระบุเลเยอร์ได้ ดังนั้นให้เปรียบเทียบ URL สาธารณะกับการตรวจสอบสถานะในเครื่องและบันทึกข้อผิดพลาดของ Nginx

ในการติดตั้ง Linux แบบแพ็กเกจ ให้ทดสอบเอนด์พอยต์ของ Document Server ในเครื่อง:

curl -i http://127.0.0.1/healthcheck

หากเซิร์ฟเวอร์ถูกตั้งค่าให้ให้บริการ ONLYOFFICE บนพอร์ตภายในที่ไม่ใช่ค่าเริ่มต้น ให้ใช้พอร์ตนั้นแทน การติดตั้งที่ทำงานได้ปกติมักจะส่งคืนการตอบสนอง HTTP ที่สำเร็จพร้อมtrueหากการร้องขอภายในนี้ล้มเหลว ให้แก้ไขบริการ Document Server ก่อนที่จะแก้ไขพร็อกซีภายนอก หากสำเร็จในเครื่อง แต่ชื่อโฮสต์สาธารณะส่งคืนรหัส 502 ให้มุ่งเน้นไปที่อัปสตรีม Nginx ภายนอก โปรโตคอล ส่วนหัว และเส้นทางไฟร์วอลล์

ตรวจสอบว่ากระบวนการใดเป็นเจ้าของพอร์ตที่คาดหวังไว้:

sudo ss -ltnp | grep -E ':(80|443|8080|8000)\b'

พอร์ตจะแตกต่างกันไปตามโทโพโลยี การแมป Docker ทั่วไปจะเผยแพร่พอร์ตโฮสต์ เช่น 8080 ไปยังพอร์ตคอนเทนเนอร์ 80 ในขณะที่การติดตั้งแพ็กเกจอาจใช้ Nginx ของตัวเองบนโฮสต์ อย่าคิดว่านั่น127.0.0.1:80คืออัปสตรีมที่ถูกต้องเพียงเพราะทั้งสองบริการอยู่บนเครื่องเดียวกัน

2. ตรวจสอบบริการและบันทึกการใช้งาน ONLYOFFICE

ในการติดตั้งแพ็กเกจ Linux ให้ตรวจสอบบริการเอกสารและตัวแปลง:

sudo systemctl status ds-docservice ds-converter
sudo journalctl -u ds-docservice -u ds-converter --since "15 minutes ago" --no-pager

คู่มือการแก้ไขปัญหาของ ONLYOFFICE ระบุรายการบริการเหล่านี้และชี้ให้เห็นถึงหน่วยความจำไม่เพียงพอ ความขัดแย้งของพอร์ต 80 และบันทึกบริการ เป็นสิ่งที่จะต้องตรวจสอบเมื่อบริการ Docs ไม่สามารถเริ่มต้นได้ หากบริการใดหยุดทำงาน ให้ตรวจสอบข้อผิดพลาดของบริการนั้นก่อน จากนั้นจึงเริ่มต้นบริการที่ได้รับผลกระทบอีกครั้ง:

sudo systemctl restart ds-docservice

ไดเร็กทอรีบันทึกหลักของ Linux คือ/var/log/onlyoffice/documentserver/ตรวจสอบบันทึกข้อผิดพลาดของ Nginx และบันทึกของ docservice เพื่อหาข้อความต่างๆ เช่น “connection refused,” “upstream timed out,” หรือไฟล์หายไป ข้อความเหล่านี้ชี้ไปที่สาเหตุต่างๆ กัน: การเชื่อมต่อถูกปฏิเสธโดยปกติหมายความว่ากระบวนการหรือพอร์ตต้นทางไม่พร้อมใช้งาน ในขณะที่การหมดเวลาอาจหมายความว่าบริการโอเวอร์โหลดหรือหยุดชะงัก

หากโปรแกรมหยุดทำงานซ้ำๆ โปรดตรวจสอบพื้นที่ดิสก์และหน่วยความจำที่ว่างอยู่ด้วย:

df -h
free -h

อย่าพยายามรีสตาร์ทบริการที่ล้มเหลวซ้ำ ๆ โดยไม่ตรวจสอบบันทึกการทำงานก่อน การรีสตาร์ทอาจซ่อนอาการผิดปกติได้ชั่วคราวโดยไม่ได้แก้ไขปัญหาความขัดแย้งของพอร์ต การพึ่งพาที่ล้มเหลว หรือปัญหาด้านทรัพยากร

3. ตรวจสอบว่า Nginx ชี้ไปยังเซิร์ฟเวอร์อัปสตรีมที่สามารถเข้าถึงได้

อ่านข้อมูลโฮสต์เสมือนที่ใช้งานอยู่และยืนยันที่อยู่และพอร์ตที่ถูกต้องในไฟล์proxy_pass.php จากเครื่องหรือคอนเทนเนอร์ที่ Nginx ทำงานอยู่ ให้ร้องขอการเชื่อมต่อจากอัปสตรีมโดยตรง ตัวอย่างเช่น หากคอนเทนเนอร์เผยแพร่พอร์ต 80 เป็นพอร์ตโฮสต์ 8080:

curl -i http://127.0.0.1:8080/healthcheck

แทนที่ที่อยู่ตัวอย่างด้วยปลายทางที่สามารถเข้าถึงได้จริงจากพร็อกซี หาก Nginx ทำงานในคอนเทนเนอร์ Docker แยกต่างหาก127.0.0.1ให้หมายถึงคอนเทนเนอร์ Nginx นั้นเอง ไม่ใช่โฮสต์ Docker หรือคอนเทนเนอร์ ONLYOFFICE ใช้ชื่อบริการที่สามารถเข้าถึงได้บนเครือข่าย Docker ที่ใช้ร่วมกัน หรือที่อยู่โฮสต์และพอร์ตที่เผยแพร่ที่ถูกต้อง

ตรวจสอบให้แน่ใจว่ารูปแบบการเชื่อมต่อต้นทางตรงกับการเชื่อมต่อปลายทาง ใช้ เฉพาะ http://ในกรณีที่ตัวรับฟังปลายทางใช้ HTTP ธรรมดา และhttps://เฉพาะในกรณีที่ได้กำหนดค่าสำหรับ TLS แล้ว การส่ง HTTP ไปยังพอร์ต TLS หรือ TLS ไปยังพอร์ต HTTP ธรรมดา อาจทำให้บริการที่ทำงานได้ปกติปรากฏว่าไม่สามารถใช้งานได้สำหรับ Nginx

4. ตรวจสอบส่วนหัวที่ส่งต่อและพร็อกซี WebSocket

คู่มือการใช้งาน Reverse Proxy ของ ONLYOFFICE ระบุว่าให้คงค่า โปรโตคอล X-Forwarded-ProtoและX-Forwarded-Hostชื่อโฮสต์เดิมไว้ เพื่อให้แอปพลิเคชันทราบโปรโตคอลและชื่อโฮสต์ดั้งเดิม ตัวอย่างอย่างเป็นทางการของ Nginx ก็ส่งผ่านส่วนหัวการอัปเกรดเช่นกัน หากมีพร็อกซีภายนอกอยู่ด้านหน้า ONLYOFFICE ให้เปรียบเทียบการกำหนดค่ากับสถานการณ์อย่างเป็นทางการที่ตรงกับโครงสร้างเครือข่ายของคุณ

ตัวอย่างแบบง่ายสำหรับการแมปคอนเทนเนอร์ Docker กับพอร์ตโฮสต์ 8080 แสดงอยู่ด้านล่าง ใส่mapคำสั่งนี้ไว้ในคอนเท็กซ์ของ Nginx httpและปรับชื่อโฮสต์ การกำหนดค่า TLS และพอร์ตอัปสตรีมให้เข้ากับการตั้งค่าของคุณ:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 443 ssl;
    server_name docs.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

นี่เป็นเพียงรูปแบบอ้างอิง ไม่ใช่การแทนที่แบบใช้ได้ทันทีสำหรับทุกการติดตั้ง โดยเฉพาะอย่างยิ่ง อย่าคัดลอกไปวางทับการตั้งค่า Nginx ของ ONLYOFFICE ที่ติดตั้งมาโดยไม่เข้าใจว่าบล็อกเซิร์ฟเวอร์ใดเป็นเจ้าของพอร์ต 80 และ 443 หาก Nginx ใช้โฮสต์ร่วมกับ ONLYOFFICE ที่ติดตั้งมา ให้ตรวจสอบก่อนว่าไม่มีการชนกันของพอร์ต และกำหนดเส้นทางพร็อกซีภายนอกไปยังตัวรับฟังภายในที่กำหนดค่าไว้สำหรับการใช้งานของคุณ

หลังจากแก้ไขเสร็จแล้ว ให้ทดสอบการตั้งค่าก่อนที่จะรีโหลด Nginx:

sudo nginx -t
sudo systemctl reload nginx

หากการทดสอบการกำหนดค่าล้มเหลว ให้แก้ไขไฟล์และบรรทัดที่รายงานก่อนที่จะโหลดใหม่ ข้อผิดพลาดทางไวยากรณ์และข้อผิดพลาด 502 จากต้นทางเป็นปัญหาที่แยกจากกัน การทดสอบที่สำเร็จnginx -tยืนยันว่าไวยากรณ์ถูกต้อง ไม่ใช่ว่าต้นทางตอบกลับมา

5. หาก ONLYOFFICE ทำงานอยู่บน Docker ให้ตรวจสอบสถานะการทำงานและการแมปพอร์ต

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

docker ps --filter name=onlyoffice
docker port <container_name_or_id>
docker logs --tail 100 <container_name_or_id>

คู่มือการติดตั้ง Docker อย่างเป็นทางการจะแมปพอร์ตของโฮสต์ไปยังพอร์ต 80 ของคอนเทนเนอร์ และตัวอย่างจะตรวจสอบบันทึกของคอนเทนเนอร์หากหน้าต้อนรับไม่โหลด ใช้พอร์ตที่แสดงเป็นdocker portอัปสตรีมฝั่งโฮสต์ เมื่อทั้ง Nginx และ ONLYOFFICE เป็นคอนเทนเนอร์ ให้วางไว้ในเครือข่ายที่ใช้ร่วมกันและกำหนดเส้นทางไปยังชื่อบริการ ONLYOFFICE และพอร์ตของคอนเทนเนอร์ แทนที่จะเป็นที่อยู่ลูปแบ็กของโฮสต์

ตรวจสอบสถานะความสมบูรณ์ของคอนเทนเนอร์หากไฟล์ Compose ของคุณกำหนดการตรวจสอบสถานะไว้ ตัวอย่าง Compose เวอร์ชันปัจจุบันจะตรวจสอบhttp://localhost:8000/info/info.jsonภายในคอนเทนเนอร์ คอนเทนเนอร์ที่ "กำลังทำงาน" อาจยังมีบริการเอกสารที่ไม่สมบูรณ์อยู่ หากมีการรีสตาร์ทหรือทำงานผิดปกติ ให้ใช้บันทึกเพื่อตรวจสอบการเริ่มต้นฐานข้อมูล หน่วยความจำ และการกำหนดค่า ก่อนที่จะเปลี่ยนพร็อกซีภายนอก

ONLYOFFICE จะบันทึกเส้นทาง Docker ที่ถาวรสำหรับบันทึกข้อมูล ใบรับรอง และแคชไฟล์ หลีกเลี่ยงการลบวอลุ่มในระหว่างการแก้ไขปัญหา เนื่องจากอาจมีใบรับรองหรือข้อมูลอื่น ๆ ที่จำเป็นต่อการกู้คืนบริการ

6. โหลดระบบใหม่ ทดสอบเอนด์พอยต์ด้านสุขภาพ และทดสอบการทำงานร่วมกันอีกครั้ง

หลังจากแก้ไขปัญหาที่ได้รับการยืนยันแล้ว ให้ทดสอบชื่อโฮสต์สาธารณะและเปรียบเทียบกับปลายทางภายในเครื่อง:

curl -i https://docs.example.com/healthcheck

ใช้ URL ของ Document Server จริงของคุณ การตอบสนองที่สำเร็จทั้งที่ local upstream และ public hostname แสดงว่า Nginx สามารถเข้าถึงแบ็กเอนด์และส่งการตอบกลับสถานะได้ จากนั้นเปิดหน้าต้อนรับของ Document Server และลองทำซ้ำการกระทำที่ล้มเหลวใน Nextcloud, ownCloud หรือตัวเชื่อมต่ออื่นๆ ของคุณอีกครั้ง

หากการตรวจสอบสถานะสุขภาพสำเร็จ แต่ตัวเชื่อมต่อยังคงรายงานข้อผิดพลาด ปัญหาที่เหลืออยู่อาจอยู่นอกเหนือขอบเขต 502 ของ Nginx เช่น URL ของตัวเชื่อมต่อ ความเชื่อถือ TLS หรือการตั้งค่า JWT ให้เปรียบเทียบค่าเหล่านั้นกับค่าการกำหนดค่าของตัวเชื่อมต่อและ ONLYOFFICE แทนที่จะแก้ไขค่าหมดเวลาของพร็อกซีโดยไม่รู้สาเหตุ

การวินิจฉัยอย่างรวดเร็ว

ผลลัพธ์การตรวจสอบครั้งต่อไปที่มีประโยชน์ที่สุด
การตรวจสอบสุขภาพในพื้นที่ไม่ผ่านตรวจสอบds-docserviceพอร์ตds-converterทรัพยากร และบันทึกของเซิร์ฟเวอร์เอกสาร
การตรวจสอบสุขภาพในพื้นที่ใช้งานได้ แต่ URL สาธารณะแสดงข้อผิดพลาด 502ตรวจสอบ Nginx ภายนอกproxy_passพอร์ตที่เข้าถึงได้ โปรโตคอล และเส้นทางไฟร์วอลล์
สถานะการทำงานของ Docker ฝั่งโฮสต์ปกติดี แต่คอนเทนเนอร์พร็อกซีล้มเหลวตรวจสอบการเป็นสมาชิกเครือข่าย Docker และใช้ชื่อคอนเทนเนอร์/บริการแทนที่จะใช้ proxy-container localhost
การตรวจสอบสถานะสุขภาพทำงานได้ผ่านทาง URL สาธารณะ มีเพียงการเชื่อมต่อเท่านั้นที่ล้มเหลวตรวจสอบ URL ของตัวเชื่อมต่อ ความเชื่อถือของใบรับรอง และการกำหนดค่า JWT

เอกสารอ้างอิงอย่างเป็นทางการ

ฝากความเห็น

วิธีเชื่อมต่อ ONLYOFFICE Desktop Editors กับ ownCloud Server

วิธีเชื่อมต่อ ONLYOFFICE Desktop Editors กับ ownCloud Server

เชื่อมต่อ ONLYOFFICE Desktop Editors กับเซิร์ฟเวอร์ ownCloud ของคุณ ลงชื่อเข้าใช้ เปิดไฟล์บนคลาวด์ จัดการการเชื่อมต่อ และแก้ไขปัญหาการตั้งค่าทั่วไป

วิธีแก้ไขปัญหาการใช้งาน CPU สูงใน Collabora Online จาก loolwsd / coolwsd

วิธีแก้ไขปัญหาการใช้งาน CPU สูงใน Collabora Online จาก loolwsd / coolwsd

แก้ไขปัญหาการใช้งาน CPU สูงใน Collabora Online โดยการระบุโปรเซสชุดเครื่องมือที่ทำงานหนัก ตรวจสอบเมตริกและบันทึก ปรับแต่งการทำงานพร้อมกันและการล้างข้อมูล และตรวจสอบการแก้ไขอย่างปลอดภัย

วิธีปรับแต่งแบรนด์ ONLYOFFICE Docs ด้วยโลโก้และสีของคุณเอง

วิธีปรับแต่งแบรนด์ ONLYOFFICE Docs ด้วยโลโก้และสีของคุณเอง

เรียนรู้วิธีปรับแต่งแบรนด์ ONLYOFFICE Docs ด้วยโลโก้ส่วนหัวและสีของอินเทอร์เฟซ รวมถึงข้อจำกัดของใบอนุญาต การตั้งค่าธีม JSON เส้นทาง Docker และการทดสอบ

แก้ไขปัญหาการมองเห็นข้อความในโหมดมืดใน LibreOffice Calc

แก้ไขปัญหาการมองเห็นข้อความในโหมดมืดใน LibreOffice Calc

แก้ไขปัญหาข้อความที่อ่านยากใน LibreOffice Calc โดยตรวจสอบธีมของแอป แบบอักษรและสีเติมของเซลล์ สไตล์ และการจัดรูปแบบตามเงื่อนไข จากนั้นตรวจสอบผลลัพธ์การพิมพ์

แก้ไขข้อผิดพลาด “เอกสารถูกล็อกโดยผู้ใช้ที่ไม่รู้จัก” ใน LibreOffice

แก้ไขข้อผิดพลาด “เอกสารถูกล็อกโดยผู้ใช้ที่ไม่รู้จัก” ใน LibreOffice

ล้างคำเตือนการล็อกผู้ใช้ที่ไม่รู้จักของ LibreOffice อย่างปลอดภัย ตรวจสอบเซสชันที่ใช้งานอยู่ ป้องกันสำเนา ลบเฉพาะการล็อกที่หมดอายุซึ่งได้รับการตรวจสอบแล้ว และทดสอบเอกสาร

แก้ไขข้อความภาษาอาหรับและฮิบรูที่เขียนจากขวาไปซ้ายใน LibreOffice Writer

แก้ไขข้อความภาษาอาหรับและฮิบรูที่เขียนจากขวาไปซ้ายใน LibreOffice Writer

แก้ไขข้อความภาษาอาหรับหรือฮิบรูที่จัดเรียงหรือผสมกับภาษาอังกฤษไม่ถูกต้องใน LibreOffice Writer เปิดใช้งานการจัดวางข้อความที่ซับซ้อน กำหนดทิศทางย่อหน้า และตรวจสอบผลลัพธ์

เปรียบเทียบฟังก์ชัน VLOOKUP กับ XLOOKUP ใน LibreOffice Calc: คู่มือสำหรับผู้เริ่มต้นใช้งาน

เปรียบเทียบฟังก์ชัน VLOOKUP กับ XLOOKUP ใน LibreOffice Calc: คู่มือสำหรับผู้เริ่มต้นใช้งาน

เรียนรู้การใช้งาน VLOOKUP และ XLOOKUP ใน LibreOffice Calc รวมถึงการค้นหาแบบตรงกันทุกประการ การค้นหาทางซ้าย ผลลัพธ์ที่ไม่พบ การค้นหาแบบย้อนกลับ ทางเลือกอื่นนอกเหนือจาก INDEX/MATCH และข้อผิดพลาดที่พบบ่อย

วิธีแก้ไขปัญหา “การตรวจสอบหลักฐาน WOPI ล้มเหลว” ใน Collabora Online

วิธีแก้ไขปัญหา “การตรวจสอบหลักฐาน WOPI ล้มเหลว” ใน Collabora Online

แก้ไขปัญหาการตรวจสอบความถูกต้องของหลักฐาน WOPI ใน Collabora Online โดยตรวจสอบคีย์การค้นหา การหมุนเวียนคีย์ URL พร็อกซี การประทับเวลา และรายการอนุญาตโฮสต์

วิธีเปิดใช้งานการติดตามการเปลี่ยนแปลงโดยค่าเริ่มต้นใน ONLYOFFICE Docs

วิธีเปิดใช้งานการติดตามการเปลี่ยนแปลงโดยค่าเริ่มต้นใน ONLYOFFICE Docs

เปิดใช้งานการติดตามการเปลี่ยนแปลงสำหรับทุกคนในเอกสาร ONLYOFFICE รักษาสถานะการใช้งานไว้หลังจากเปิดเอกสารใหม่ และทำความเข้าใจข้อจำกัดของการตั้งค่าเริ่มต้นแบบทั่วโลก

วิธีตั้งค่าการหมดเวลาเมื่อไม่ได้ใช้งานสำหรับเซสชันการแก้ไขใน Collabora

วิธีตั้งค่าการหมดเวลาเมื่อไม่ได้ใช้งานสำหรับเซสชันการแก้ไขใน Collabora

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