#amazon-web-services #nginx #https #tcp #nginx-config
#amazon-web-services #nginx #https #tcp #nginx-config
Вопрос:
Я установил Nginx на компьютере Amazon Linux и, используя конфигурационный файл:
http {
upstream allbackend {
#round robin private IP
server 172.31.xx.xxx:8080;
server 172.31.xx.xx:8080;
}
server {
listen 80;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/xxx.ddns.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.ddns.net/privkey.pem;
ssl_protocols TLSv1.3;
location / {
proxy_pass http://allbackend/;
}
}
}
events { }
Однако сайт xxx.ddns.net работает только в HTTP, а не в HTTPS. Группы безопасности определены:
cURL возвращает мне это:
curl https://xxx.ddns.net/
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xxx.ddns.net:443
В чем проблема?
Ответ №1:
Вам нужен один серверный блок для порта 80 (HTTP) и один для порта 443 (HTTPS). Серверный блок для порта 80 просто перенаправляет на серверный блок для порта 443. Вся конфигурация выглядит примерно так:
server {
listen 80;
server_name xxx.ddns.net www.xxx.ddns.net;
return 301 https://xxx.ddns.net$request_uri;
}
server {
listen 443 ssl http2;
server_name xxx.ddns.net www.xxx.ddns.net;
ssl on;
ssl_certificate /etc/letsencrypt/live/xxx.ddns.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.ddns.net/privkey.pem;
ssl_protocols TLSv1.3;
location / {
proxy_pass http://allbackend:port;
}
}
Надеюсь, это поможет решить вашу проблему 🙂