Mục đích của trường hợp nginx này là để GitLab và OpenWRT Luci chuyển hướng thông qua một proxy ngược. Nó đã hoạt động cho một số trang web khác, tất cả đều có url cơ sở dường như chống lại vấn đề này.
- GitLab trong ví dụ này là trên máy chủ cục bộ tại cổng 9000.
- Trang web nginx nằm trên cổng 8080.
- OpenWRT có cùng một vấn đề, nhưng với / cgi-bin / luci /
Cấu hình nginx có liên quan cho vị trí ví dụ là;
location /gitlab/ {
proxy_pass http://127.0.0.1:9000/;
proxy_redirect default;
}
- Lưu ý rằng các kết quả là giống nhau và không có dấu gạch chéo.
Có một số tùy chọn cấu hình proxy tiêu đề đang được áp dụng cho vị trí này.
# 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;]
- Nhận xét #proxy_set_header Host thay vì chuyển hướng trình duyệt đến
https://127.0.0.1:9000/users/sign_in
Khi duyệt đến https://website.com:8080/gitlab/
;
GET /gitlab/ HTTP/1.1
Host: website.com:8080
Phản hồi không chính xác quay trở lại /users/sign_in
thay vì/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
Duyệt thủ công tới https: // website: 8080 / gitlab / users / sign_in tải trang, nhưng không có tài sản nào khi chúng rơi cho đến cùng một vấn đề như trên.
Đọc tài liệu nginx , nó gợi ý rằng hành vi proxy mặc định sẽ xử lý tình huống này, mặc dù nó dường như thất bại.
Các bản ghi dường như không hiển thị nhiều.
Những bước bổ sung nào cần được thực hiện để giúp chẩn đoán tại sao điều này có thể xảy ra?