Cập nhật: Tôi đã thêm lần thử thứ 2 ở cuối bài đăng này. Nó đang "hoạt động", nhưng tôi muốn thực hiện ý tưởng ban đầu của mình.
Tôi đang cố chuyển hướng yêu cầu https cho miền này sang miền khác thông qua máy chủ chuyển hướng.
tôi sẽ sử dụng https://website.com
, https://website2.com
, và https://myredirectserver.com
ví dụ như.
Tôi đã mua chứng chỉ SSL với giá trang web.com
, và đó là DNS được CNAMED tại www
đến myredirectserver.com
. Ngoài ra còn có chứng chỉ SSL cho mywebsite2.com
, và nó hiện nằm trên một máy chủ. Tất cả đều tốt như một tên miền độc lập.
myredirectserver.com
có hai Bản ghi Quản lý Lưu lượng A (tính khả dụng cao) trỏ đến hai địa chỉ IP.
Hai địa chỉ IP đó được NAT trong tường lửa tới máy chủ proxy.
Trên máy chủ proxy đó, có Docker Container, chạy Alpine/Nginx.
Dockerfile cho vùng chứa:
TỪ nginx:1.17.7-alpine
RUN apk thêm --no-cache tzdata
ENV TZ Mỹ/Chicago
CHẠY rm /etc/nginx/conf.d/default.conf
SAO CHÉP myredirectserver.com.conf /etc/nginx/conf.d/myredirectserver.com.conf
CHẠY rm /etc/nginx/nginx.conf
SAO CHÉP nginx.conf /etc/nginx/nginx.conf
SAO CHÉP myredirectserver.com.crt /etc/nginx/ssl/myredirectserver.com.crt
SAO CHÉP myredirectserver.com.key /etc/nginx/ssl/myredirectserver.com.key
SAO CHÉP proxy_params /etc/nginx/proxy_params
Các docker chạy
phần để khởi động nó (có các ổ đĩa được gắn để tạo tệp cấu hình động thông qua mã phụ trợ):
docker run --name=myredirectserver --restart always --log-opt max-size=50m --log-opt max-file=5 -d -v /etc/nginx/myredirectserverBuild:/etc/nginx/myredirectserverBuild -v /etc/nginx/myredirectserverSSL:/etc/nginx/myredirectserverSSL -p 8224:443 -p 8223:80 myredirectserver
Trong Docker Container đó, tệp cấu hình Nginx nằm ở /etc/nginx/conf.d/myredirectserver.com.conf
:
#TÔI KHÔNG BIẾT ĐIỀU NÀY CÓ ĐÚNG CHO NHỮNG GÌ TÔI CẦN
người phục vụ {
nghe 443 ssl;
server_name myredirectserver.com www.myredirectserver.com;
ssl_certificate /etc/nginx/ssl/myredirectserver.com.crt;
ssl_certificate_key /etc/nginx/ssl/myredirectserver.com.key;
}
người phục vụ {
nghe 80;
server_name myredirectserver.com www.myredirectserver.com;
trả lại 301 https://www.myredirectserver.com$request_uri;
}
bao gồm /etc/nginx/myredirectserverBuild/*.conf;
Tệp bao gồm ở cuối chứa nguyên miền được yêu cầu, mywebsite.com.conf
:
## máy chủ ảo www.mywebsite.com
người phục vụ {
nghe 443 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/nginx/myredirectwebsiteSSL/mywebsite.com.crt;
ssl_certificate_key /etc/nginx/myredirectwebsiteSSL/mywebsite.com.key;
}
người phục vụ {
nghe 80;
server_name mywebsite.com www.mywebsite.com;
trả lại 301 https://www.mywebsite2.com$request_uri; <--- Chuyển hướng
}
Các trang web2.com
tên miền nằm trên máy chủ lưu trữ và tôi có thể yêu cầu tên miền đó như bình thường. Tôi chỉ không thể tìm ra nơi tôi đã đi sai. Tôi cảm thấy như nó nằm trong (các) cấu hình Nginx của tôi, nhưng cú pháp Nginx của tôi không phải là tốt nhất.
Tại sao là của tôi trả lại 301
không hoạt động và chuyển hướng tôi đến tên miền?
Một vài lưu ý trong quá trình khắc phục sự cố:
quên 0.0.0.0:8223
trả về:
--2021-07-26 23:44:19-- http://0.0.0.0:8223/
Đang kết nối với 0.0.0.0:8223... đã kết nối.
Đã gửi yêu cầu HTTP, đang chờ phản hồi... 301 Đã di chuyển vĩnh viễn
Vị trí: https://www.mywebsite2.com/ [theo sau]
--2021-07-25 23:44:19-- https://www.mywebsite2.com/
Đang giải quyết www.mywebsite2.com (www.mywebsite2.com)... XX.XXX.XXX.XXX
Đang kết nối với www.mywebsite2.com (www.mywebsite2.com)|XX.XXX.XXX.XXX|:443... đã kết nối.
Đã gửi yêu cầu HTTP, đang chờ phản hồi... 200 OK
Độ dài: không xác định [text/html]
Đang lưu vào: âindex.htmlâ
index.html [ <=> ] 37,56K 231KB/giây trong 0,2 giây
25-07-2021 23:44:20 (231 KB/giây) - âindex.htmlâ đã lưu [38461]
curl --resolve www.myredirectserver.com:8223:0.0.0.0 http://www.myredirectserver.com/
trả về thời gian chờ, cũng như trình duyệt.
Khi ở trên mạng cục bộ, hãy nhập IP của bộ chứa Docker vào thanh địa chỉ (192.168.69.140:8223
) đưa tôi đến https://www.website2.com
.
nhập https://192.168.69.140:8224
đưa tôi đến một trang cảnh báo giật gân bảo mật. Nhấp chuột tiếp tục
, và nó mang lại cho tôi một 404
.
Tôi lúng túng vì không biết xử lý yêu cầu như thế nào khi nó đến IP của CNAME myredirectserver.com
. Làm cách nào tôi có thể yêu cầu Nginx xem miền được yêu cầu ban đầu trang web.com
?
Cập nhật (lần thử thứ 2):
Tôi đã dừng bộ chứa Docker và thay đổi CNAME
tại www
cấp trong DNS để trỏ đến một IP có tính khả dụng cao đã tồn tại. tôi sẽ gọi nó máy chủ đích.net
. Nên về cơ bản:
`mywebsite.com`
|
|---> CNAME 'destinationserver.net'
`destinationserver.net`
|
|----> A XX.XXX.XXX.XXX --> Tường lửa --> Proxy
|----> A XX.XXX.XXX.XXX --> Tường lửa --> Proxy
trên máy chủ đích.net
máy chủ, tôi có phần sau trong cấu hình Nginx cho trang web.com
:
# ## máy chủ ảo www.mywebsite.com
người phục vụ {
nghe 8222 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/nginx/ssl/mywebsite.com.crt;
ssl_certificate_key /etc/nginx/ssl/mywebsite.com.key;
trả lại 301 http://www.mywebsite2.com$request_uri;
}
người phục vụ {
nghe 8221 ;
server_name mywebsite.com www.mywebsite.com;
trả lại 301 https://www.mywebsite2$request_uri;
}
Như tôi đã nêu trong phần 'Cập nhật' ở dòng đầu tiên của câu hỏi, điều này "đang hoạt động", nhưng sẽ rất tuyệt nếu xử lý các chuyển hướng này trong một không gian riêng biệt, do đó có ý tưởng về vùng chứa Docker.