Принудительное перенаправление с http на https nginx на определенный порт

У меня работает служба на порту 9000 и я настроил ssl с помощью letsencrypt. Я хотел бы пересылать все запросы с http на https.

http://demo.mydomain.com -> https://demo.mydomain.com 
http://www.demo.mydomain.com -> https://demo.mydomain.com 
www.demo.mydomain.com -> https://demo.mydomain.com

Вот моя конфигурация

vi / etc / nginx / sites-available / default

server {
        root /var/www/html;

        server_name demo.mydomain.com;

        location / {
                proxy_pass http://127.0.0.1:9000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/demo.mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/demo.mydomain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}



server {
    if ($host = demo.mydomain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

     listen 80 default_server;
     listen [::]:80 default_server;

     server_name demo.mydomain.com;
     return 301 https://$host$request_uri;
     #return 404; # managed by Certbot

}

# nginx -t

# systemctl reload nginx.service

# curl -I https: // demo.mydomain.com -> Работает

# curl -I http://demo.mydomain.com -> Время истекает

Я пробовал много подобных решений, но у меня ничего не работало. Спасибо за подсказку.

0
задан 25 September 2019 в 20:41
1 ответ

Это была моя глупая ошибка. Порт 80 не был открыт в экземпляре aws. Однако вот моя рабочая конфигурация для принудительного перенаправления с http на https для службы, работающей на другом порту.

server {
        server_name demo.mydomain.com www.demo.mydomain.com;

        location / {
                proxy_pass http://127.0.0.1:9000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/demo.mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/demo.mydomain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = demo.mydomain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

     listen 80 default_server;
     listen [::]:80 default_server;

     server_name demo.mydomain.com;
     #return 404; # managed by Certbot
}

Также не забудьте открыть порты 80 и 443. Ура!

0
ответ дан 5 December 2019 в 00:39

Теги

Похожие вопросы