Tôi muốn lưu trữ một trang web và chạy một dự án vi dịch vụ trên máy chủ của riêng mình.
Trang web sẽ được chạy với máy chủ web Nginx. Tên miền của trang web sẽ giống như sampleapp.com và trang web này sẽ sử dụng freessl.
Một trong những dịch vụ của dự án Microservice sẽ được chạy với máy chủ web Nginx dưới dạng dịch vụ trong bộ chứa docker. Dịch vụ này sử dụng các tên miền phụ của sampleapp.com của tôi, chẳng hạn như api-dev.sampleapp.com và các tên miền phụ đó cũng sẽ hoạt động với SSL.
Khi cố gắng triển khai các dịch vụ với docker-compose, tôi gặp lỗi sau:
[cảnh báo] 1#1: xung đột tên máy chủ "api-dev.sample.com" trên
0.0.0.0:80, bỏ qua
Mối quan tâm chính là làm cách nào tôi có thể thiết lập ssl bên trong docker. 443 là cổng mặc định cho HTTPS.
Tệp cấu hình Nginx của microservice của tôi như sau.
worker_processes tự động;
sự kiện {
công_nhân kết_nối 1024 ;
}
http {
người phục vụ {
nghe 80 default_server;
tên máy chủ "";
trả lại 444;
}
người phục vụ {
server_name game-dev.sampleapp.com;
địa điểm / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Máy chủ $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header Kết nối "nâng cấp";
proxy_pass http://game_nodes;
proxy_redirect tắt;
}
}
người phục vụ {
nếu ($host = game-dev.sampleapp.com) {
trả lại 301 https://$host$request_uri;
}
nghe 80;
nghe [::]:80;
server_name game-dev.sampleapp.com;
trả lại 404;
}
ngược dòng game_nodes {
# kích hoạt phiên dính
# ip_hash;
trò chơi máy chủ-alpha:3000;
giữ nguyên 8;
}
người phục vụ {
server_name api-dev.sampleapp.com;
địa điểm / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Máy chủ $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://main_nodes;
proxy_redirect tắt;
}
}
người phục vụ {
# nếu ($host = api-dev.sampleapp.com) {
# trả lại 301 https://$host$request_uri;
#}
nghe 80;
nghe [::]:80;
server_name api-dev.sampleapp.com;
trả lại 404;
}
thượng nguồn main_nodes {
máy chủ chính-alpha:8000;
máy chủ chính-beta:8000;
giữ nguyên 8;
}
}
Nginx config fle của website như bên dưới
người phục vụ {
nghe 8080 ;
nghe [::]:8080;
nghe 8443 ssl http2;
nghe [::]:8443 ssl http2;
server_name sampleapp.com www.sampleapp.com;
gốc /var/www/sampleapp.com;
chỉ số index.html;
ssl_certificate /etc/ssl/certs/sampleapp.com.pem;
ssl_certificate_key /etc/ssl/private/sampleapp.com.key;
ssl_client_certificate /etc/ssl/certs/origin-pull-ca.pem;
bật ssl_verify_client;
client_max_body_size 100M;
tự động tắt;
địa điểm / {
try_files $uri $uri/ =404;
}
}
Tôi là nhà phát triển, không phải quản trị viên hệ thống, vì vậy tôi gặp khó khăn trong việc tìm ra cách tốt nhất để thực hiện việc này.