ইলাস্টিক বিয়ানস্টালক একটি সিঙ্গল ডকার কনটেইনার থেকে একাধিক পোর্ট সমর্থন করে না, তাই আপনাকে পরামর্শ অনুযায়ী প্রক্সি স্তরে এটি পরিচালনা করতে হবে। তবে আপনার ইসি 2 উদাহরণটি আপনার শংসাপত্র সম্পর্কে জানার দরকার নেই, কারণ আপনি লোড ব্যালেন্সারে এসএসএল সংযোগটি শেষ করতে পারেন।
আপনার .ebextensions
ডিরেক্টরিতে, এনগিনেক্স প্রক্সির জন্য একটি কনফিগারেশন তৈরি করুন যাতে দুটি সার্ভার কনফিগার থাকে; একটি প্রক্সি http://docker
(ডিফল্ট কনফিগারেশন, পোর্ট 80), এবং একটি যা https এ পুনঃনির্দেশ করে (আমি 8080 বন্দরটি বেছে নিয়েছি)।
.ebextensions/01-nginx-proxy.config
:
files:
"/etc/nginx/sites-available/000-default.conf":
mode: "000644"
owner: root
group: root
content: |
map $http_upgrade $connection_upgrade {
default "upgrade";
"" "";
}
server {
listen 80;
gzip on;
gzip_comp_level 4;
gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
access_log /var/log/nginx/access.log;
location / {
proxy_pass http://docker;
proxy_http_version 1.1;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 8080;
location / {
return 301 https://$host$request_uri;
}
}
commands:
00_enable_site:
command: 'rm -f /etc/nginx/sites-enabled/* && ln -s /etc/nginx/sites-available/000-default.conf /etc/nginx/sites-enabled/000-default.conf'
EB লোড-ব্যালেন্সার এবং সুরক্ষা গোষ্ঠীগুলির জন্য একটি দ্বিতীয় কনফিগারেশন তৈরি করুন যা সেগুলি নীচে সেট করে:
- ইসি 2 উদাহরণ :
- লোড ব্যালেন্সার থেকে 80/8080 বন্দরগুলিতে ট্র্যাফিকের অনুমতি দিন
- যে কোনও জায়গা থেকে 22 বন্দরে ট্র্যাফিকের অনুমতি দিন (এসএসএস অ্যাক্সেসের জন্য, alচ্ছিক)
- ভার ভারসাম্যকারী :
- 80 HTTP পোর্টে 443 HTTPS পোর্ট ফরওয়ার্ড করুন
- 8080 HTTP পোর্টে 80 HTTP পোর্ট ফরওয়ার্ড করুন
.ebextensions/02-load-balancer.config
:
"Resources" : {
"AWSEBSecurityGroup": {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Instance security group (22/80/8080 in)",
"SecurityGroupIngress" : [ {
"IpProtocol" : "tcp",
"FromPort" : "80",
"ToPort" : "80",
"SourceSecurityGroupId" : { "Ref" : "AWSEBLoadBalancerSecurityGroup" }
}, {
"IpProtocol" : "tcp",
"FromPort" : "8080",
"ToPort" : "8080",
"SourceSecurityGroupId" : { "Ref" : "AWSEBLoadBalancerSecurityGroup" }
}, {
"IpProtocol" : "tcp",
"FromPort" : "22",
"ToPort" : "22",
"CidrIp" : "0.0.0.0/0"
} ]
}
},
"AWSEBLoadBalancerSecurityGroup": {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Load balancer security group (80/443 in, 80/8080 out)",
"VpcId" : "<vpc_id>",
"SecurityGroupIngress" : [ {
"IpProtocol" : "tcp",
"FromPort" : "80",
"ToPort" : "80",
"CidrIp" : "0.0.0.0/0"
}, {
"IpProtocol" : "tcp",
"FromPort" : "443",
"ToPort" : "443",
"CidrIp" : "0.0.0.0/0"
} ],
"SecurityGroupEgress": [ {
"IpProtocol" : "tcp",
"FromPort" : "80",
"ToPort" : "80",
"CidrIp" : "0.0.0.0/0"
}, {
"IpProtocol" : "tcp",
"FromPort" : "8080",
"ToPort" : "8080",
"CidrIp" : "0.0.0.0/0"
} ]
}
},
"AWSEBLoadBalancer" : {
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties" : {
"Listeners" : [ {
"LoadBalancerPort" : "80",
"InstancePort" : "8080",
"Protocol" : "HTTP"
}, {
"LoadBalancerPort" : "443",
"InstancePort" : "80",
"Protocol" : "HTTPS",
"SSLCertificateId" : "arn:aws:iam::<certificate_id>:<certificate_path>"
} ]
}
}
}
(দ্রষ্টব্য: আপনার মানগুলির সাথে এসএসসি সার্টিফিকেটআইডি এবং ভিপিসিআইডি প্রতিস্থাপন করতে ভুলবেন না)।
ইসি 2 উদাহরণে লোড ব্যালেন্সার (এইচটিটিপি) 80 পোর্টের যে কোনও ট্র্যাফিক 8080 পোর্টে আঘাত করবে, যা এইচটিটিপিএসে পুনঃনির্দেশ করে। লোড ব্যালেন্সারে (এইচটিটিপিএস) 443 পোর্টে ট্রাফিক ইসি 2 উদাহরণে 80 পোর্ট দ্বারা পরিবেশন করা হবে যা ডকার প্রক্সি।