У меня EC2 Ubuntu 18.04 Server с платформой Python Flask, работающей на Gunicorn
сервере приложений с Nginx
обратным прокси-сервером, прослушивающим порты 80 и 443. Я добавил LetsEncrypt
для домена с помощью certbot.
Сайт отлично работает без ssl.При конфигурации LetsEncrypt
ssl на Nginx
сервер не может загрузить страницу.Моя предыдущая конфигурация supervisor
и Nginx
без поддержки ssl выглядит следующим образом, и Nginx
работает с gunicorn
без проблем.
server {
listen 80;
server_name example.com www.example.com;
location /static {
alias /home/ubuntu/myapp-backend/myapp/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
}
[program:myapp]
directory=/home/ubuntu/myapp-backend
command=/home/ubuntu/myapp-backend/venv/bin/gunicorn -w 5 run:app
user=ubuntu
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
stderr_logfile=/var/log/myapp/myapp.err.log
stdout_logfile=/var/log/myapp/myapp.out.log
Когда я изменяю конфигурацию Nginx
навключить поддержку LetsEncrypt
при прослушивании через порты 80 и 443, веб-сайт не появляется .. Он показывает неопределенные 301 запрос перенаправления.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
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;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location /static {
alias /home/ubuntu/myapp-backend/myapp/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
}
Когда я загружаю сайт example.com
, он перенаправляет наhttps:\\www.example.com
.Однако домашняя страница веб-сайта не загружается и не показывает какой-либо ответ от сервера / Nginx.Когда я захожу на сервер и запускаю curl -v localhost:8000
, оружейный завод работает нормально.
curl -v localhost:8000
* Rebuilt URL to: localhost:8000/
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8000 (#0)
> GET / HTTP/1.1
> Host: localhost:8000
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 500 INTERNAL SERVER ERROR
< Server: gunicorn/19.9.0
< Date: Sat, 28 Sep 2019 14:14:47 GMT
< Connection: close
< Content-Type: text/html; charset=utf-8
< Content-Length: 27911
<
<!doctype html>
...
Ранее был Stackoverflow вопрос о gunicorn
поверх ssl с параметрами ssl, который можно добавить в supervisor
config.Я считаю, что ошибка должна быть в конфигурации Nginx
на порту 443 или Gunicorn
supervisor
config config.Если бы вы могли взглянуть, я был бы признателен.