2012-04-16 42 views
10

Tôi đã định cấu hình nginx thành lưu lượng truy cập https proxy thành một máy chủ http chạy trên cùng một máy.Nginx proxy https tới http trên cổng không chuẩn?

Mọi thứ hoạt động tốt khi tôi định cấu hình nginx để nghe/proxy từ cổng https 443. Nhưng tôi thực sự muốn nghe trên cổng không chuẩn. Khi tôi cấu hình một cổng không chuẩn, nginx nhận được yêu cầu và gửi nó đến máy chủ http của tôi, như nó cần, nhưng máy chủ đang phản hồi với một chuyển hướng HTTP trở lại trình duyệt để nó chuyển hướng đến máy chủ 'https: //. com/someurl ".Tôi có nghĩa là url chuyển hướng có vẻ tốt ngoại trừ việc nó thiếu cổng chính xác. Tôi có thiếu tiêu đề HTTP mà tôi cần phải đặt trong proxy không?

Cụ thể tôi đang chạy một phiên bản http của Bản nhạc .; http://getontracks.org Nếu vấn đề

của tôi (làm việc trên cổng tiêu chuẩn) cấu hình máy chủ nginx:

location /{ 
    proxy_pass http://localhost:50000; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_redirect off; 
} 

Trả lời

1

Th. là một vấn đề của ứng dụng đang chạy trên máy chủ lưu trữ ngược (Tracks), không phải cấu hình máy chủ web (trừ khi cấu hình máy chủ web ngược dòng của bạn có chứa các quy tắc viết lại, tất nhiên). Các ứng dụng khác nhau xử lý các tình huống này một cách khác nhau: một số yêu cầu một tham số cấu hình rõ ràng cho biết URL thực mà ứng dụng có thể đạt được, một số sử dụng các tiêu đề HTTP nhất định, một số sử dụng các tiêu đề HTTP khác.

Vì bản nhạc là ứng dụng Rails, bạn có thể sẽ nhận được nhiều câu trả lời có kiến ​​thức hơn nếu bạn thêm một thẻ tương ứng vào câu hỏi của mình.

+0

Cảm ơn. Tôi đã tìm thấy một số bài đăng trên diễn đàn đề xuất đặt tiêu đề HTTP X-Forwarded-Port mặc dù điều đó có vẻ giống tiêu đề không chuẩn 'không chuẩn' hơn. Tôi đã thử cài đặt nó trong cấu hình nginx mà không có may mắn. Tôi cho rằng dù sao, như bạn nói, ứng dụng đang chạy trên máy chủ lưu trữ ngược dòng cần phải biết và thực hiện hành động trên một cái gì đó như thế. – kenen

24

Vấn đề bắt nguồn từ dòng -

proxy_set_header Host $host; 

máy chủ web của bạn (WEBrick) lần lượt là bao gồm này khi ban hành các phản ứng chuyển hướng.

Bạn có thể thay đổi nó để bao gồm các cổng không chuẩn -

proxy_set_header Host $host:$server_port; 

mà nên giải quyết này.

+0

Rất tốt. Điều này giải quyết vấn đề của tôi với ứng dụng bình chạy phía sau proxy ngược nginx cố gắng tạo ra url thích hợp bao gồm. cổng không phải starndard như được mô tả trong [flask snippet 35] (http://flask.pocoo.org/snippets/35/) mà không cần phải chạm vào đoạn mã đó. –

Các vấn đề liên quan