Не удается получить перенаправление Http -> Https 301 для работы с Nginx

#ubuntu #nginx #pm2

#ubuntu #nginx #pm2

Вопрос:

К сожалению, я не могу заставить это перенаправление HTTP на HTTPS работать. Я размещаю веб-приложение и запускаю его с PM2, при этом nginx действует как обратный прокси. У меня нет проблем, когда у меня есть мое местоположение / блок внутри блока прослушивания 80, но после использования letsencrypt certbot сайт просто не загружается. Я не получаю ошибок в /var/log/nginx/errors.log, но также нет записей о доступе в /var/log/nginx/access.log . Проверка синтаксиса Nginx пройдена. Когда я смотрю на вкладку Chrome network, она просто показывает перенаправление 301 и что заголовки являются предварительными. У меня есть порты 80 и 443, а nginx полностью открыт на ufw, используя ubuntu 20.04. Чего мне здесь не хватает? Прикрепленные мои сайты — доступны ниже, и у меня есть рабочая символическая ссылка на включенные сайты.

 server {
    listen 80;
    listen [::]:80;
    server_name www.example.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.example.com;
    
    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/chain.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;

    location / {
        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;
        proxy_pass http://localhost:3000;
    }
}
  

Комментарии:

1. что происходит, когда вы получаете доступ http://www.example.com и http://example.com

2. Страница @ThanhNguyenVan была полностью пустой, просто попыталась загрузиться, а затем, в конечном итоге, истекла. В итоге на облачном сервере Google был внешний брандмауэр, который блокировал порт, у меня не было доступа к порталу, поскольку сервер был предоставлен моим работодателем. Однако в приведенной выше конфигурации nginx не было ничего плохого, поэтому я продолжу публикацию на случай, если кому-нибудь понадобится увидеть пример этого 🙂

Ответ №1:

Виртуальный сервер, на котором я запускал это, был облачным сервером Google, предоставленным моим работодателем, в итоге я предположил, что порт 443 был заблокирован брандмауэром GCS, и это было правильно. Вот инструкции по настройке этого брандмауэра: https://cloud.google.com/vpc/docs/using-firewalls