Tôi biết câu hỏi này đã được hỏi trước đây, nhưng dường như không có gì có hiệu quả đối với tôi. Tôi đã thử nhiều thứ khác nhau, chẳng hạn như câu trả lời mô tả trong các câu hỏi sau:Cây đậu đàn hồi Http Chuyển hướng đến Https
How to get Elastic Beanstalk nginx-backed proxy server to auto-redirect from HTTP to HTTPS? Redirecting EC2 elb from http to https
Không ai trong số họ có vẻ làm việc. Tôi là một noob aws, vì vậy tôi không hoàn toàn chắc chắn như thế nào chỉnh sửa các tập tin cấu hình hoạt động - hoặc nếu tôi đã làm điều gì đó sai trái.
thiết lập của tôi là như sau:
- Route 53 điểm để đàn hồi Beanstalk (nginx)
- ELB port configuration with ACM certificate (sử dụng tcp/ssl vì nó làm cho WebSockets tôi làm việc)
- ứng dụng nodejs trên cổng 8080
Tệp nginx.config hiện tại của tôi trong thư mục .ebextensions của tôi (có này từ this article):
files:
"/tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf" :
mode: "000755"
owner: root
group: root
content: |
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
set $fixedWWW '';
set $needRedir 0;
# nginx does not allow nested if statements
# check and decide on adding www prefix
if ($host !~* ^www(.*)) {
set $fixedWWW 'www.';
set $needRedir 1;
}
# what about that https? the traffic is all http right now
# but elastic load balancer tells us about the original scheme
# using $http_x_forwarded_proto variable
if ($http_x_forwarded_proto != 'https') {
set $needRedir 1;
}
# ok, so whats the verdict, do we need to redirect?
if ($needRedir = 1) {
rewrite ^(.*) https://$fixedWWW$host$1 redirect;
}
location/{
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
gzip on;
}
Nhưng điều này dường như không làm gì cả. Tôi đã hết ý tưởng. Tôi không chắc là mình đang bỏ lỡ một bước hay gì đó nhưng tôi không biết phải làm gì. Như một giải pháp khác, tôi đã có kết thúc trước của angularjs chuyển hướng các yêu cầu không phải https, nhưng điều này quá khó và một số DOM hiển thị trước khi chuyển hướng, tôi muốn chuyển hướng ở trình cân bằng tải - nơi nó sẽ chuyển hướng.
Trong nháy mắt, cấu hình Nginx của bạn có vẻ đúng. Nó đang kiểm tra tiêu đề x-forwarded-proto và chuyển hướng nếu không phải là 'https'. Có vẻ như bạn cũng đang chuyển hướng từ tên miền trần sang tên miền phụ www, có hoạt động không? Bạn có chắc chắn cấu hình nginx thực sự đang được áp dụng cho các máy chủ beanstalk của bạn? –
Tôi đã thực sự chỉ trỏ tên miền rỗng vào www ở tuyến 53, và sau đó là các điểm www cho EB. Vì vậy, kiểm tra đó là dư thừa vào lúc này. Làm cách nào để kiểm tra xem tệp này có ghi đè tệp mặc định không? – KDogg
[Bạn đã làm gì KDogg] (https://xkcd.com/979/) ?? Tôi có cùng một vấn đề! –