我們有一個重定向,像這樣一個公共AWS ELB:ELB重定向443/80單端口上的nginx搬運工容器
HTTP 80 HTTP 9001
TCP 443 TCP 9001
的目標實例是運行碼頭工人與Nginx上的AWS實例ECS容器。
泊塢窗被轉發9001 - > 8080,和nginx的正在監聽8080 下面是一個剪斷nginx的配置中:
server {
ssl on;
ssl_certificate /etc/nginx/mydomain.crt;
ssl_certificate_key /etc/nginx/mydomain.key;
listen 8080;
server_name %{ROUTER_CLEARCARE_SERVER_NAME};
access_log /var/log/nginx/access.log logstash_json;
if ($http_x_forwarded_proto != 'https') {
return 301 https://$host$request_uri;
}
set $target_web "web.mydomain.com:80";
location/{
proxy_read_timeout 180;
proxy_connect_timeout 2;
proxy_send_timeout 180;
keepalive_timeout 180;
resolver 10.10.0.2 valid=30s;
proxy_set_header Host $host;
proxy_pass http://$target_web;
proxy_set_header X-Unique-ID $request_id;
}
}
我需要做SSL終止nginx的容器上,因爲我們有多個證明多個域,並且我們使用基於路徑的路由和不同的超時(ELB僅支持單個證書,並且ALB不支持具有不同超時和證書的基於路徑的路由)。我們正在使用一個名爲Empire的工具來將nginx容器部署到AWS ECS,他們目前只支持這種配置)。
nginx可以在單個端口上支持http和https嗎?
現在,通過這種結構,我試圖打http://example.com時出現此錯誤:
The plain HTTP request was sent to HTTPS port
當我試着打https://example.com我得到這個錯誤我得到這個錯誤:
mydomain.com redirected you too many times.
工作正常!非常感謝! – grayaii