ฉันมีปัญหากับการกำหนดค่า NGINX ฉันมีเว็บเซิร์ฟเวอร์สองตัวที่ทำงานบนเซิร์ฟเวอร์ windows อันใดที่ถูกเรียกจากภายนอกด้วย 443 จากนั้นควรส่งต่อไปยังเซิร์ฟเวอร์ด้วย 41001 บล็อกเซิร์ฟเวอร์ที่สองควรเรียกว่า FQDN และ nginx ควรส่งต่อไปยัง FQDN.com/test ภายในและภายนอก.
ในการบล็อกเซิร์ฟเวอร์แรกจะใช้เวลาโหลดตลอดไปและดูเหมือนว่าจะไม่มีอะไรทำงาน ด้วยบล็อกเซิร์ฟเวอร์ที่สอง ฉันได้รับ 404 กลับมา
นี่คือลักษณะการกำหนดค่าของฉันและบันทึกข้อผิดพลาด
เซิร์ฟเวอร์ {
server_name test.example.com;
ส่งคืน 301 http://test.example.com/test$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl http2;
access_log /var/log/nginx/test_service_access.log;
error_log /var/log/nginx/test_service_error.log;
ssl_certificate /etc/nginx/ssl/test.com.pem;
ssl_certificate_key /etc/nginx/ssl/test.key;
ssl_session_timeout 1d;
ปิด ssl_session_tickets;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-G> ปิด ssl_prefer_server_ciphers;
สถานที่ / ทดสอบ {
proxy_pass https://10.10.10.10/test/;
}
client_max_body_size 0;
proxy_connect_timeout 90 วินาที;
proxy_send_timeout 90 วินาที;
proxy_read_timeout 90 วินาที;
send_timeout 90;
}
เซิร์ฟเวอร์ {
server_name test2.example.com;
# เปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดไปยัง HTTPS ด้วยการตอบสนอง 301 ย้ายอย่างถาวร
ส่งคืน 301 https://test2.example.com$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl http2;
server_name test2.example.com;
access_log /var/log/nginx/test2_service_access.log;
error_log /var/log/nginx/test2_service_error.log;
ssl_certificate /etc/nginx/ssl/test2.example.com.pem;
ssl_certificate_key /etc/nginx/ssl/test2example.key;
# ssl_session_cache ที่ใช้ร่วมกัน:SSL:50m;
ssl_session_timeout 1d;
ปิด ssl_session_tickets;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-G>
ปิด ssl_prefer_server_ciphers;
add_header การขนส่งที่เข้มงวด - ความปลอดภัยสูงสุดอายุ = 15768000;
ที่ตั้ง / {
# ตัวแก้ไข 10.150.10.10 8.8.8.8;
proxy_pass https://test2.example.com:41001/;
proxy_redirect https://test2.example.com:41001/ https://test2.example.com/;
client_max_body_size 0;
proxy_connect_timeout 90 วินาที;
proxy_send_timeout 90 วินาที;
proxy_read_timeout 90 วินาที;
send_timeout 90;
}
}
}
ฉันดูที่ error.logs และนี่คือสิ่งที่เกิดขึ้น
2022/02/13 12:54:58 [ข้อผิดพลาด] 2620#2620: *15 open() "/usr/share/nginx/html/DocuWare/Platform/LoginRedirect" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์ : xxx.xxx.xxx.xxx, เซิร์ฟเวอร์: , คำขอ: "GET /DocuWare/Platform/LoginRedirect?returnUrl=%2fdocuware%2fPlatform%2fWebClient%2f HTTP/2.0", โฮสต์: "test2.domain.com", ผู้อ้างอิง: "https://test.domain.com/docuware/Platform/WebClient/"
2022/02/13 12:35:17 [ข้อผิดพลาด] 2541#2541: *1 อัปสตรีมหมดเวลา (110: การเชื่อมต่อหมดเวลา) ขณะเชื่อมต่อกับอัปสตรีม ไคลเอนต์:
เกี่ยวกับข้อผิดพลาดครั้งแรกฉันไม่เข้าใจว่าผิดพลาดอะไร
ตามที่ฉันเข้าใจ ฉันต้องกำหนดอัปสตรีมสำหรับเซิร์ฟเวอร์ที่มีพอร์ต 41001 ถูกต้องหรือไม่
ฉันพลาดอะไรไปหรือเปล่า
อัปเดต
ฉันได้ปรับการกำหนดค่าให้เล็กที่สุดเพื่อให้สามารถทดสอบได้ การกำหนดค่าของฉันมีลักษณะดังนี้
#################################################### ######################
ลูกคิดต้นน้ำ {
เซิร์ฟเวอร์ 10.120.50.11;
}
เซิร์ฟเวอร์ {
ฟัง 80;
server_name abacus.example.com;
ส่งคืน 301 https://abacus.example.com$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
server_name abacus.example.com;
ssl_certificate /etc/nginx/ssl/xxx.com.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_protocols TLSv1.2 TLSv1.3;
access_log /var/log/nginx/abacus_service_access.log;
error_log /var/log/nginx/abacus_service_error.log;
ที่ตั้ง / {
proxy_pass http://ลูกคิด;
}
}
#################################################### #####################
เอกสารต้นน้ำ {
เซิร์ฟเวอร์ 10.120.50.10;
}
เซิร์ฟเวอร์ {
ฟัง 80;
server_name docuware.example.com;
ส่งคืน 301 https://docuware.example.com$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
server_name docuware.example.com;
ssl_certificate /etc/nginx/ssl/xxx.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_protocols TLSv1.2 TLSv1.3;
access_log /var/log/nginx/docuware_service_access.log;
error_log /var/log/nginx/docuware_service_error.log;
ที่ตั้ง / {
proxy_pass http://docuware/docuware;
}
}
}
เมื่อฉันเข้าถึงเซิร์ฟเวอร์ "abacus.example.com" ฉันจะไปที่หน้าแรกของ IIS
ดังนั้นฉันต้องกำหนดว่าฉันมาจากภายนอกด้วย 443 (HTTPS) และฉันถูกเปลี่ยนเส้นทางไปที่พอร์ต 23001
ถ้าฉันเข้าถึงเซิร์ฟเวอร์ "docuware.example.com/docuware" ฉันจะได้รับ 404 - ไม่พบไฟล์หรือไดเร็กทอรี
ดังนั้นที่นี่ฉันต้องกำหนดว่ามันสามารถเข้าถึงเซิร์ฟเวอร์ด้วยเส้นทางย่อย
ในเครือข่ายภายในใช้งานได้โดยไม่มีปัญหา
ฉันถูกเปลี่ยนเส้นทางไปที่ "docuware.example.com/DocuWare/Platform/WebClient/ClientAccount/xxx"
คุณเห็นตรงนี้ไหมว่าฉันต้องปรับอะไรบ้าง? ฉันตีหัวกับมันมาหลายชั่วโมงแล้ว