Nginx не перенаправляет трафик с http на https - PullRequest
0 голосов
/ 04 апреля 2019

У меня nginx установлен на сервере EC2 в Amazon Linux 2 и обслуживает мой веб-сайт по HTTP и HTTPS.Однако я не могу заставить блоки местоположения работать по HTTP.Они отлично работают на HTTPS, если мне нужно передать файл или перенаправить на proxy_path, но не работают для HTTP.

Я хочу перенаправить весь трафик с HTTP на HTTPS.

В дополнение, даже если я удалю первый блок сервера, веб-сайт по-прежнему будет обслуживаться через порт 80.

server {
        listen 80;
        server_name *.example.com;
        return 301 https://$host$request_uri;
    }

Вот мой полный файл конфигурации nginx, расположенный по адресу /etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    #include /etc/nginx/conf.d/*.conf;

    server {
        listen 80;
        server_name *.example.com;
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;

        server_name *.example.com;

        ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        location /.well-known/acme-challenge/test {
                return 200 'test.test';
        }
        location / {
            proxy_pass http://localhost:5000;
            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;
        }
    }
}

Существует ли файл конфигурации по умолчанию, который использует nginx?

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Я исправил проблему.Основной проблемой был другой процесс, кеширующий запросы и работающий на хосте и прослушивающий порты 80 и 443. Убил процесс и все работает нормально.

0 голосов
/ 04 апреля 2019

Ваш http блок должен выглядеть следующим образом:

server {
    listen 80;
    server_name *.example.com;

    location / {
        return 301 https://$host$request_uri;
    }
}
...