При подключении к сайту выдаёт ошибку 400, как исправить?

Подскажите, такая проблема - настроил SSL в NGINX, поставил сертификат через certbot, команда nginx -t ошибок не выдаёт никаких. Однако сайт выдаёт ошибку 400 Bad Request с текстом - The plain HTTP request was sent to HTTPS port (Обычный HTTP-запрос был отправлен на HTTPS-порт)

Вот код из nginx.conf :

server {
		listen 8080;
    server_name example.com;

		location / {
    	rewrite ^(.*)$ https://example.com$1 permanent;
  	}
	}

	server {
		listen 3000 ssl;
		server_name example.com;
		root /var/www/example.com/;
		index index.html;
		ssl_certificate /etc/letsencrypt/live/example.com/cert.pem;
		ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

		location / {
    	proxy_pass http://00.000.000.00:8080;
  	}

		location /server/ {
    resolver 00.000.000.00;
    proxy_pass https://00.000.000.00;
  	}
	}
  • Вопрос задан
  • 5512 просмотров
Решения вопроса 1
@TheWWCode
Ошибка 400 Bad Request возникает, когда сервер не может понять запрос, отправленный клиентом. В вашем случае это может быть связано с тем, что настройки сервера не соответствуют запросу.

Судя по коду из вашего nginx.conf, вы пытаетесь перенаправить HTTP-запросы на HTTPS-порт с помощью rewrite. Однако вместо этого запросы на порт 8080 проксируются на другой сервер.

Для исправления проблемы с ошибкой 400 вам нужно изменить ваш nginx.conf, чтобы он правильно перенаправлял HTTP-запросы на HTTPS-порт.

Примерно так должно выглядеть ваш nginx.conf:

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

server {
    listen 443 ssl;
    server_name example.com;

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

    location / {
        root /var/www/example.com/;
        index index.html;
    }

    location /server/ {
        resolver 00.000.000.00;
        proxy_pass https://00.000.000.00;
    }
}


Этот конфигурационный файл перенаправляет все запросы на порт 80 (HTTP) на порт 443 (HTTPS) с помощью return 301. Затем он обрабатывает запросы на порт 443 (HTTPS), предоставляя файлы из каталога /var/www/example.com/ для пути / и проксируя запросы на путь /server/ на другой сервер.

Убедитесь, что после внесения изменений вы перезапустили сервер NGINX с помощью команды
sudo systemctl restart nginx.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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