Как один виртуальный сервер nginx может работать с портами 80 и 443?

У меня есть файл конфигурации с настройкой виртуального сервера, это работает на порту 443 для ssl. Мне также хотелось бы, чтобы этот тот же самый виртуальный сервер обрабатывал не ssl-трафик на порту 80.

Я надеялся сделать следующее, но, похоже, это не работает.

server {
    listen 443 ssl;
    listen 80;
    server_name example.com;
    ...
}

Похоже, что параметры ssl ниже этих настроек вызывают проблемы для трафика non ssl.

Ответ 2

Да, конечно.

server {
  listen 80;
  listen 443 ssl;
  # force https-redirects
  if ($scheme = http) {
    return 301 https://$server_name$request_uri;
  }
}

Вот мой пост, имя "Конфигурация Nginx для HTTPS", который содержит больше информации.