จุดประสงค์ของอินสแตนซ์ nginx นี้คือการรับ GitLab และ OpenWRT Luci เพื่อเปลี่ยนเส้นทางผ่านพร็อกซีย้อนกลับ มันใช้งานได้แล้วสำหรับเว็บไซต์อื่น ๆ หลายแห่งซึ่งทั้งหมดมี url พื้นฐานซึ่งดูเหมือนจะตอบโต้ปัญหานี้
- GitLab ในตัวอย่างนี้อยู่บนโลคัลเซิร์ฟเวอร์ที่พอร์ต 9000
- เว็บไซต์ nginx อยู่ที่พอร์ต 8080
- OpenWRT มีปัญหาเดียวกัน แต่มี / cgi-bin / luci /
การกำหนดค่า nginx ที่เกี่ยวข้องสำหรับตำแหน่งตัวอย่างคือ
location /gitlab/ {
proxy_pass http://127.0.0.1:9000/;
proxy_redirect default;
}
- โปรดทราบว่าผลลัพธ์จะเหมือนกันทั้งที่มีและไม่มีเครื่องหมายทับ
มีตัวเลือกการกำหนดค่าพร็อกซีส่วนหัวบางส่วนที่ใช้กับตำแหน่งนี้
# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
# Basic Proxy Config
proxy_set_header Host $host:$server_port;
proxy_set_header Origin $scheme://$host:$server_port;
proxy_set_header Connection $http_connection;
proxy_set_header Cookie $http_cookie;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Frame-Options SAMEORIGIN;
# Advanced Proxy Config
send_timeout 5m;
proxy_read_timeout 300;
proxy_send_timeout 300;
proxy_connect_timeout 300;
proxy_buffers 32 4k;
proxy_buffer_size 4k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_http_version 1.1;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;]
- การแสดงความคิดเห็น #proxy_set_header Host แทนการเปลี่ยนเส้นทางเบราว์เซอร์ไป
https://127.0.0.1:9000/users/sign_in
เมื่อเรียกดูhttps://website.com:8080/gitlab/
;
GET /gitlab/ HTTP/1.1
Host: website.com:8080
การตอบกลับไม่ถูกต้องกลับไป/users/sign_in
เป็นแทนที่จะ/gitlab/users/sign_in
HTTP/1.1 302 Found
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Location: https://website.com:8080/users/sign_in
การเรียกดูด้วยตนเองเพื่อhttps: // เว็บไซต์: 8080 / gitlab / users / sign_inโหลดหน้าเว็บ แต่ไม่มีเนื้อหาใด ๆ ตกอยู่จนกว่าจะมีปัญหาเดียวกับที่กล่าวมาข้างต้น
การอ่านเอกสาร nginxแสดงว่าพฤติกรรมพร็อกซีเริ่มต้นควรจัดการกับสถานการณ์นี้แม้ว่าจะดูเหมือนว่าจะล้มเหลว
บันทึกดูเหมือนจะไม่แสดงมากนัก
ควรดำเนินการขั้นตอนใดเพิ่มเติมเพื่อช่วยในการวิเคราะห์สาเหตุที่อาจเกิดขึ้น