Thiết lập chuyển hướng www â không có www và HTTP â HTTPS đồng thời, tôi gặp phải sự cố trùng lặp mà tôi không khắc phục được.
Trên miền của tôi—hãy để nó như vậy ví dụ.com
âTôi có một trang web với tên chính khác.example.com
. Tôi muốn các yêu cầu để ví dụ.com
, www.example.com
, và www.another.example.com
được chuyển hướng đến khác.example.com
và tất cả các yêu cầu HTTP sẽ được chuyển hướng đến HTTPS cùng một lúc; Tôi cũng muốn hỗ trợ HTTP/2 và IPv6.
Tôi không gặp vấn đề gì với việc làm cho nó hoạt động, nhưng tôi không loại bỏ được việc sao chép một phần quan trọng của tệp cấu hình (cụ thể là cài đặt chứng chỉ HTTPS). Mọi cố gắng giảm trùng lặp đều khiến một hoặc nhiều hoặc tất cả chuyển hướng ngừng hoạt động (đôi khi cùng với HTTP/2).
Vui lòng xem cấu hình và đề xuất cách dọn dẹp:
người phục vụ {
nghe 80;
nghe [::]:80;
server_name www.another.example.com www.example.com other.example.com example.com;
trả lại 301 https://another.example.com$request_uri;
}
người phục vụ {
nghe 443;
nghe [::]:443;
server_name www.another.example.com www.example.com example.com;
trả lại 301 https://another.example.com$request_uri;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
người phục vụ {
server_name other.example.com;
gốc /usr/share/nginx/another.example.com;
chỉ số index.html;
địa điểm / {
try_files $uri $uri/ =404;
}
nghe [::]:443 ssl http2;
nghe 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}